精华内容
下载资源
问答
  • 2021-03-06 23:33:12

    语法糖(Syntactic sugar):

    计算机语言中特殊的某种语法

    这种语法对语言的功能并没有影响

    对于程序员有更好的易用性

    能够增加程序的可读性

    简而言之,语法糖就是程序语言中提供[奇技淫巧]的一种手段和方式而已。 通过这类方式编写出来的代码,即好看又好用,好似糖一般的语法。固美其名曰:语法糖

    一个简单的例子

    假设:有2个数字,现需要从中得到最大的那个数字。如何实现?

    b = 2

    c = 3

    if b > c:

    a = b

    else:

    a = c

    其实还有更多的其它实现方式:

    a = max(b, c)

    a = c > b and c or b

    a = c if c > b else b

    a = [b, c][c > b]

    这些都是可以实现我们需求的方法,殊途同归。但是它们在易用性、简洁性、可读性、性能等方面的表现都不一样。那么问题来了!

    哪个才是我们所说的语法糖呢?

    一些常见的语法糖

    a = b = 2; c = 3

    b, c = c, b

    a < c < b < 5

    '1' * 100

    [1,2,3,4] + [5,6,7,8]

    可以看到这些语法,在其它语言里通常不会出现的。但是在Python中却神奇的被支持了,所以这些都是当之无愧的Python语法糖。

    切片操作

    像列表这类可以支持**切片**操作的对象,则是我最初喜欢Python的一个非常重要的原因。

    l = [1, 2, 3, 4, 5]

    l[2]

    l[:3]

    l[3:]

    l[2:4]

    l[:-1]

    l[:]

    l[::2]

    else语法糖

    Python中提供一类else的语法,它可以在原有语法基础之上,支持更多一种情况的选择。 主要有for-else,while-else,try-else。需要注意的是,for-else和while-else需要和break语句配合时使用。

    for else

    for i in range(1):

    print(i)

    break

    else:

    print('for end')

    while else

    i = 1

    while i:

    print(i)

    i -= 1

    break

    else:

    print('while end')

    try else

    try:

    1 / 1

    except Exception as e:

    print('except occured')

    else:

    print('it is fine')

    finally:

    print('i am finally')

    函数相关语法糖

    Python中函数我们都非常的熟悉,而在函数的使用上却有着与其它语言不同的选择。

    动态参数

    def example_dynamic_args(*args, **kwargs):

    '''动态参数'''

    print(args)

    print(kwargs)

    这个函数的参数与函数相比,其参数会有些不同之处。因为它们在接收参数时使用了不同方式。

    example_dynamic_args(1,'2', True, name='xiaowu', age=18)

    l = [1,'2',False]

    d = {'name': 'xiaoming', age: '16'}

    example_dynamic_args(*l, **d)

    匿名函数

    匿名函数在很多的语言中都存在,通常在临时需要一个函数的场景下使用。

    lambda x: x * 2

    Python中使用lambda表达式来实现匿名函数,观察上面的lambda表达式。其特点如下:

    可以接受函数

    函数体只有一个表达式

    无需显式的return语句

    整个表达式在一个语法行内实现

    值得注意的是,lambda表达式除了一些语法上的限制之外;其它函数该有的特性它都有。比如:支持动态参数。下面是一个使用lambda表示的场景:

    in_dict = {'a': 10, 'b': 2, 'c': 3}

    print('in_dict:', in_dict)

    out_dict = sorted(in_dict.items(), key=lambda x: x[1])

    print('out_dict', out_dict)

    推导表达式

    推导表达式是Python中常见的语法糖,在很多的数据处理场景中,我们可能会使用的到。 最常见的就是列表推导表达式,可以用来过滤、处理列表中的子项并输出一个新的列表。除此之外还有几个推导式也是非常好用的。

    列表推导表达式

    in_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7]

    print('array before:', in_list)

    array = [i for i in in_list if i % 2 != 0] # 列表推导表达式

    print('array after:', array)

    生成器推导表达式

    in_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7]

    print('array before:', in_list)

    array = (i for i in in_list if i % 2 != 0) # 生成器推导表达式

    print('array after:', array)

    集合推导表达式

    in_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7]

    print('array before:', in_list)

    array = {i for i in in_list if i % 2 != 0} # 集合推导表达式

    print('array after:', array)

    字典推导表达式

    in_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7]

    print('array before:', in_list)

    array = {i: i * 2 for i in in_list if i % 2 != 0} # 字典推导表达式

    print('array after:', array)

    不同推导式在语法使用上基本一致,只是在返回对象的类型上有所差别。

    yield表达式

    yield语法也是Python中比较有特点的语法糖,可以说是特有的。虽然其它语言有实现类似机制的功能。 yield是Python中实现**协程(coroutine)**的一个重要基础。

    def example_generator(in_list):

    '''生成器'''

    for i in in_list:

    yield i * 2

    装饰器

    重要的往往在最后面,装饰器是学习Python绕不过去的坎。就像学习Java要理解面向对象和设计模式一样。 学习Python,你就应该要掌握好闭包、生成器、装饰器等相关知识。而对于编写高并发程序时则要掌握协程相关知识。

    def example_decorator(func):

    '''装饰器'''

    def inner():

    func()

    return inner

    更多相关内容
  • 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。...
  • JS—ES6 class语法糖

    2020-12-22 11:33:13
    JS—ES6 class语法糖: javescript语言中,生成实例对象的传统方式是通过构造函数,ES6为我们提供了更接近传统企业级语言的写 法。 首先我们先用构造函数的方式生成实例对象: 通过构造函数生成实例对象的特点:首...
  • 主要介绍了不了解这12个语法糖,别说你会Java,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 详解c# 切片语法糖

    2020-12-16 21:39:42
    昨天在 github 上准备找找 C# 9 又有哪些新语法糖可以试用,不觉在一个文档上看到一个很奇怪的写法: foreach (var item in myArray[0..5]) 哈哈,熟悉又陌生,玩过python的朋友对这个 [0..5] 太熟悉不过了,居然在 ...
  • Unity Promise语法糖

    2019-11-14 17:39:37
    Unity中 使用类似JavaScript(es6)中的promise语法,以实现优雅的异步链式调用,Unity2019可用,用法: using RSG; 后面就和js差不多了 new Promise((resolve, reject) =>{ resolve(); }).Then(()=>{});
  • 今天,我将主要讲解,关于Kotlin的一些实用语法糖,主要包括: 范围使用:in、downTo、step、until 类型检查 & 转换:is、智能转换、as 相等性:equals()、== 、 === 空安全 1. 范围使用 主要用于表示范围,主要...
  • 一句话,函数传入指针参数可用语法糖省掉,但目前版本只针对结构体有效,如下* package main import ( fmt ) func main() { s1 := 2 fmt.Println(p1:, p1(&s1)) //p1: 3 s2 := 2 p2(&s2) fmt.Println(p2:, s2)...
  • 首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。这让java开发人员羡慕不已,呵呵。
  • Python装饰器语法糖

    2020-09-19 19:08:44
    今天小编就为大家分享一篇关于Python装饰器语法糖,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 一句话,它就是 Generator 函数的语法糖。 可是,为什么这么说呢? 首先,比如说有一个异步操作,使用 async/await 语法来以同步模拟异步操作。 使用 async/await 实现一个 sleep 的功能 function sleep(time) { ...
  • 后备语法糖,用于Swift do-try-catch。 乍一看,值=尝试fallback(试试get(“ A”),尝试get(“ B”),尝试get(“ C”),尝试get(“ D”))等效于:do {value = try get (“ A”)} catch {后备语法糖,...
  • 为SQL支持的结构生成语法糖 介绍 给定具有标记字段的结构, tabler将生成返回字符串的方法,用于执行以下操作: 建立表格 放置表 插入行 选择行 有关更多信息,请参见。 安装 go get github....
  • 语法糖(Syntactic sugar),也译为糖衣语法,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。这篇文章主要给大家介绍Go语法糖之‘...’ 的使用,感兴趣的朋友一起看看吧
  • spell_sugar这个库向Python添加了一些反Python的“语法糖”。 注意:这仅仅是一个实验性的原型,它显示了Python中运算符重载的一些潜力。 仅在Python 3.6.0下进行了测试。 语法_糖这可以为Python添加一些反Python的...
  • 前言 vuex 作为 vue 框架状态数据管理模块,诞生已有些许年头,它的出现很好地解决了兄弟组件响应式状态数据通信的问题。但是,vuex 的学习是一定门槛的,同时其声明和使用方式有一些不够简洁。...
  • 主要介绍了深入理解Java基础之try-with-resource语法糖,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Promise 是异步编程的一种解决方案:从语法上讲,promise是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。promise有三种状态:pending(等待态),fulfiled(成功态)...
  • Python 之语法糖

    2022-03-18 10:41:40
    目录 定义及意义 示例 赋值 索引与切片 条件表达式 map() 函数 with open() format() 函数 匿名函数 lambda 推导式 今天自学时听老师讲到“语法糖”,有点儿迷茫,赶紧忍住口水滴答的冲动,向度娘请教。 定义及意义 ...

    目录

    定义及意义

    示例

    赋值

    索引与切片

    条件表达式

    map() 函数

    with open()

    format() 函数

    匿名函数 lambda

    推导式


            今天自学时听老师讲到“语法糖”,有点儿迷茫,赶紧忍住口水滴答的冲动,向度娘请教。

    定义及意义

            语法糖(Syntactic sugar),也译为糖衣语法,由英国计算机科学家彼得·约翰·兰达发明的一个术语,指计算机语言中添加的某种语法。这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。

            之所以叫“语法”糖,不只是因为加糖后的代码功能与加糖前保持一致,更重要的是,糖在不改变其所在位置的语法结构的前提下,实现了运行时的等价。可以简单理解为,加糖后的代码编译后跟加糖前一致。

            之所以叫语法“糖”,是因为加糖后的代码写起来更爽,包括但不限于:代码更简洁流畅,代码更语义自然……写着爽,看着爽,就像吃了糖😂。

            有人将语法糖归类为奇技淫巧,需要声明的是,“语法糖”这个词绝非贬义,它不是糖衣炮弹,更不是口蜜腹剑,它可以给编码带来实实在在的方便,也可以实实在在提高编码的效率,更重要的,在性能上也不会带来损失。

            可见,语法糖是约定俗成的,为编译器所认可的,可以带来方便快捷的,编程语法。一定程度上而言,语法糖可以呈现于书本,流通于码界,也可以诞生于指尖。窃以为,能够带来编码便利的语法,皆可称为糖😁。

            Python 中语法糖随处可见,宛如汉语中的成语和诗词,浩如星海,不胜枚举。本文仅取沧海数粟,供学习参考。

    示例

    赋值

    a, b = b, a
    a, b, c = 1, 2, 3

    索引与切片

            索引和切片是 python 序列的拿手好戏,应用广泛。 

    详见:Python 切片 [-1:],[:-1] 和 [::-1] 之理解适用序列的索引和切片操作https://blog.csdn.net/iprobobo/article/details/123456004

    条件表达式

    a if b else c

    详见:Python 之条件表达式左?还是右?,true 是个问题https://blog.csdn.net/iprobobo/article/details/123537662

    map() 函数

    s = 'Shanghai'
    l = list(map(str, s))

    详见:Python map() 函数之举重若轻映射的魅力https://blog.csdn.net/iprobobo/article/details/122798133

    with open()

    with open(file_name, 'r', encoding='utf-8') as f:
        print(f.read())

    format() 函数

    format() 函数常用于格式化字符串,功能非常强大。

    >>> '{1:.2f}, {0:.3f}'.format(3.1415926, 0.61803)
    '0.62, 3.142'

    详见:Python 字符串格式化之 .format()信手拈来https://blog.csdn.net/iprobobo/article/details/123584069 

    匿名函数 lambda

            lambda 是一个很有特点的关键字,python 利用其来来创建匿名函数,活用该函数可以轻易解决很多问题。

            例如,将一个学校的学生(student)按年级(grade)、身高(height)逆序排列,只需要一行代码:

    student.sort(key = lambda x: (['grade'], ['height']), reverse = True)

            再如将列表(list)对象排序,要求正数居前,负数殿后,且绝对值从小到大:

    >>> list = [1, -2, 3, -4, 5, -6, 7, -8]
    >>> list.sort(key = lambda x: (x < 0, abs(x)))
    >>> list
    [1, 3, 5, 7, -2, -4, -6, -8]

    详见:Python 匿名函数之 lambda解 lambda 之惑,有这一篇就够了😁https://blog.csdn.net/iprobobo/article/details/123591952

    推导式

            推导式是 Python 中常见的语法糖,其中最常见的为列表推导式,可用来过滤、处理列表中的子项并输出一个新的列表。 

    >>> a = [i for i in range(10) if i % 2 != 0]
    >>> print(a)
    [1, 3, 5, 7, 9]

    详见:Python 之推导式常用的语法糖https://blog.csdn.net/iprobobo/article/details/123582135

     

            ……

            还有很多很多语法糖,感兴趣的可以跟帖讨论🤗


    展开全文
  • vue3语法糖的使用和定义、语法糖中路由的使用、语法糖中状态管理的使用、语法糖中组件的传值

    1.vue2和vue3区别

    1.1 vue3中vue是一个对象,可以使用按需导入

    import {createApp} from 'vue ’

    1.2 导入区别

    • vue2中使用的vue-router3.0导入的是构造函数 new VueRouter()
    • vue3中使用的vue-router4.0导入的是对象 createRouter()

    1.3 语法

    vue2语法在vue3中都可以使用,除了过滤器并不能使用

    2. vue3脚手架

    脚手架中的路由有三种模式:历史模式history、哈希模式hash、抽象模式abstract

    2.1 脚手架配置

    vue create projectname------Manually select features--------Babel(js编译器)、Router、Vuex、CSS Pre-processors(css预处理器)

    3.语法糖

    3.1 组件的样式绑定

    补:scss语法和less语法动态绑定数据

    在vue中的setup函数中定义一个常量,vue3单文件组件中,支持style样式绑定变量,使用v-bind()引入动态值。组件中的数据只能绑定到组件内的标签上,组件外的标签绑定无效

     setup(props) {
                const myColor = ref("red")
                const size = ref(20)
                const mySize = computed(() => {
                    return size.value + "px"
                })
                return {
                    myColor,
                    size,
                    mySize
                }
            }
    
     body {
            background-color: v-bind(myColor);
        }
    

    3.2 语法糖

    vue3单文件组件提供了一种更简洁的语法结构,称之为“语法糖”

    3.2.1 使用语法糖

    1.在script标签上添加setup属性即变为糖衣语法,相当于整个script就是组件的setup函数

    2.在语法糖中,省略了导出export default() 省略了setup函数,省略了return()

    3.定义的数据无需return即可在模板和样式中调用

    4.语法糖中,子组件导入即可使用,无需在components中注册

    <script setup>
        import {
            ref
        } from "vue";
        const count = ref(0) 
    </script>
    

    3.3语法糖组件传值

    3.3.1 父传子

    在父组件中子组件标签使用未定义的数据变量向子组件传值,在子组件的语法糖中使用defineProps()声明自定义属性用于接收父组件传值

    defineProps定义props的函数,函数参数可以是一个数组直接接收数据,参数是一个对象用于属性验证。

    获取父组件向子组件传值通过定义的defineProps函数返回值调用传递的值

    <script setup>
        const props=defineProps(["msg","info"])
        console.log(props.msg);//获取传值
    </script>
    
    3.3.2 子传父

    在语法糖中使用defineEmits()注册自定义事件用于向父组件传值,返回是emit函数.在父组件中使用绑定自定义事件来拿到子组件向父组件的传值

    defineEmits()函数参数是一个数组,用于定义自定义事件,可以是小驼峰也可以是全部小写,但是在绑定自定义事件书写应为全部小写。

    子组件中:

    <script setup>
        import {
            ref,
            watch
        } from "vue"
        const name = ref("")
        const emit = definedEmits(["myName"])
        watch(name, newValue => {
            emit("myName", newValue)
        })
    </script>
    

    父组件:

    <HelloWorld msg="123" @my-name="value=>{age=value}"/>
    

    3.4 语法糖中的路由

    在语法糖中需要用到路由信息对象route和路由配置对象router必须按需引入对象,才可以使用

    3.4.1 在语法糖中引入路由

    在语法糖中引入路由配置对象和路由信息对象:

    import {useRoute, useRouter} from "vue-router"
    
    3.4.2 在语法糖中使用路由

    利用const定义一个常量定义路由

        const route = useRoute()
        const router = useRouter()
    
    3.4.3 在语法糖中实现路由跳转

    html:

        <button @click="goToHome">去主页</button>
    

    javascript:

        function goToHome() {
            router.push("/")
        }
    

    3.5 语法糖的状态管理

    在语法糖中使用状态管理首先也需要引入状态管理对象

    3.5.1 引入状态管理
        import { useStore } from "vuex"
    
    3.5.2 定义状态管理仓库

    在含有router的vue项目中store文件夹下的index.js文件中定义你所需要的状态管理的变量。仓库中state对象中定义变量isLogin。想要改变变量的值需要在mutations中定义修改变量的函数setisLogin,含有两个参数,第一个参数state为仓库中state定义的变量对象,第二个参数value是定义的新值。

    import { createStore } from 'vuex'
    
    export default createStore({
        state: {
            isLogin: false
        },
        getters: {},
        mutations: {
            setisLogin(state, value) {
                state.isLogin = value
            }
        },
        actions: {},
        modules: {}
    })
    
    3.5.2.1 在语法糖中调用状态管理仓库中的变量

    在组件使用之前,需要在js中导入store仓库才能使用状态管理。在组件中使用store.sate.isLogin打点调用仓库state对象中变量的值

    引入状态管理仓库:

        import {
            useStore
        } from "vuex"
    

    显示状态管理仓库的变量

        <h1>{{store.state.isLogin}}</h1>
    
    3.5.2.2 改变状态管理仓库中的变量值

    改变状态管理仓库中的变量值,需要现在状态管理仓库中的mutations对象中定义改变变量值的函数

    export default createStore({
        state: {
            isLogin: false
        },
        getters: {},
        mutations: {
            setisLogin(state, value) {
                state.isLogin = value
            }
        },
        actions: {},
        modules: {}
    })
    

    在组件中使用状态管理对象的commit函数修改变量值,参数一为状态管理中的修改变量值的函数名,第二个参数是修改后的新的变量值

    html:

        <button @click="goToHome">去主页</button>
    

    javascript:

        function goToHome() {
            router.push("/")
            store.commit("setisLogin", true)
        }
    
    展开全文
  • 弃用:检查https://github.com/vuejs/jsx而不是Vue JSX的JSX功能组件此babel插件向JSX添加了一些语法功能。 用法已弃用:检查https://github.com/vuejs/jsx而不是Vue JSX的JSX功能组件此babel插件向JSX添加了一些...
  • Java语法糖

    2022-03-29 21:14:34
    语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。...

    简介:

    语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。——百度百科

    目录

    1.for-each

    2.枚举

    3.不定项参数

    4.静态导入

    5.自动装箱与拆箱

    6.多异常并列

    7.数值类型赋值优化

    8.接口方法

    1.默认方法

    2.静态方法

    3.私有方法(Java9接口的,带实现)

    接口VS抽象类

    9.try-with-resource

    10.ResourceBundle文件加载

    11.var类型

    12.switch


    1.for-each

    语法更简单,避免越界错误

    for可以删除元素,for-each不可以删除/替换元素

    for-each遍历时,不知道当前元素具体位置索引

    for-each只能正向遍历,不能反向,也不能同时遍历2个集合

    2.枚举

    变量取值只在一个有限的集合内

    enum关键字声明枚举类,且都是Enum的子类(不需写extends)

    enum内部有多少个值,就有多少个实例对象

    不能直接new枚举类对象

    也可以添加属性/构造函数/方法

    构造函数只能是private,default进行内部调用

    3.不定项参数

    普通函数的形参列表是固定的

    不定项参数(可变参数)类型后面加...

    本质是一个数组

    一个方法只能有一个不定项参数,且必须位于参数列表的最后

    重载的优先级规则

    1.固定参数的方法,比可变参数优先级更高

    2.调用语句,同时与两个带可变参数的方法匹配会报错

    4.静态导入

    import static 导入一个类的静态方法和静态变量(相当于简写)

    静态方法名有明确特征,如有重名,需要补充类名

    5.自动装箱与拆箱

    简化基本类型和对象转换的写法

    装箱:基本类型的值被封装为一个包装类对象

    拆箱:一个包装类对象被拆开并获取相应的值

    这是编译器的工作,在class中已经添加,虚拟机没有自动装箱和拆箱的语句

    ==:基本类型是内容相同,对象时指针是否相同(内存同一个区域)

    基本类型没有空值,对象有null

    当一个基础数据类型与封装类进行==、+、-、*、/运算时,会将封装类进行拆箱,然后再运算

    6.多异常并列

    把多个异常并列在一个catch中,简写,用|分隔

    多个异常之间不能有继承关系,如果有会报错

    7.数值类型赋值优化

    整数类型用二进制赋值,避免进行运算

    在数值字面量中使用下划线_

    增加可读性和纠错功能

    下划线只能出现在数字中间,前后必须有数字

    允许在二/八/十/十六进制的数字中使用

    8.接口方法

    Java8 推出接口的默认方法/静态方法(带实现),为Lambda表达式提供支持

    1.默认方法

    规则:

    1:默认方法不能重写Object中的方法

    2:实现类可以继承/重写父接口的默认方法

    3:接口可以继承/重写父接口的默认方法

    4:当父类和父接口都有(同名同参数)默认方法,子类继承父类的默认方法,方便兼容以前版本

    5:子类实现2个接口(均有同名同参数的默认方法),那编译错误,必须在子类中重写这个default方法(要用到super)

    2.静态方法

    只属于本接口,不属于子类/子接口

    子类(子接口)没有继承该静态方法,只能通过所在的接口名来调用

    3.私有方法(Java9接口的,带实现)

    解决了多个默认方法/静态方法的内容重复问题

    只属于本接口,只在本接口内使用,不属于子类/子接口

    子类(子接口)没有继承该私有方法,也无法调用

    静态私有方法可以被静态/默认方法调用,非静态私有方法被默认方法调用

    接口VS抽象类

    相同点

    都是抽象的,都不能被实例化(new),都可以有实现方法,都不需要继承者实现所有方法

    不同点

    1.抽象类只能继承一个,接口可以实现多个

    2.接口的变量默认是public static final,且必须有初值,子类不能修改;而抽象类的变量默认是default,子类可继承修改

    3.接口没有构造函数,而抽象类有

    4.接口没有main函数,抽象类可以有

    5.接口有public/default/private的方法,抽象类有public/private/protected/default的方法

    9.try-with-resource

    程序如果打开外表资源,在使用后需要正确关闭

    考虑异常因素,Java提供try-catch-finally来保证

    JDK7提供try-with-resource,比try-catch-finally更简洁

    try (FileInputStream fis = ...) {
        ...
    }
    catch (Exception e) {
        ...
    }

    资源要求在try中,若已经在外面定义,则需要一个本地变量

    FileInputStream fis = ...;
    try (FileInputStream fis2 = fis1)
    {
        ...
    }
    catch (Exception e) {
        ...
    }

    JDK9不再要求定义临时变量,可以直接使用

    FileInputStream fis = ...;
    try (fis)
    {
        ...
    }
    catch (Exception e) {
        ...
    }

    原理:资源对象必须实现AutoCloseable接口,即实现close方法

    10.ResourceBundle文件加载

    Java8及以前,默认以ISO-8859-1方式加载Properties文件

    需要利用native2ascii工具(JDK自带)对文件进行转义

    JDK9及以后,默认以UTF-8方式加载

    若解析文件不是有效的UTF-8,则以ISO-8859-1方式加载

    11.var类型

    Java10推出:局部变量推断

    避免了信息冗余,对齐了变量名,更容易阅读

    本质上还是强类型语言,编译器负责推断类型,并写入字节码文件

    推断后不能更改

    限制:

    可以用在局部变量上,非类成员变量

    可以用在for/for-each循环

    声明时必须初始化

    不能用在方法(形式)参数和返回类型

    大面积滥用会使代码整体阅读变差

    var只在编译时起作用,没有在字节码中引入新内容

    12.switch

    不支持long/float/double,剩下都可以

    JDK12支持多分支合并,采用-> 直接连接判定条件和动作

    JDK12支持直接在表达式赋值


    文章持续学习与更新,欢迎大家指正!

    展开全文
  • 主要介绍了详解es6超好用的语法糖Decorator,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员...
  • vue3的props与emit的使用(包含语法糖方式) 一、非语法糖中props 用于父组件接收(或触发)子组件利用组件属性传过来的数据(或方法), 触发(接收)子组件的方法(或数据) 1、父组件模板中是: @click ="method...
  • 对express增加了语法糖的简单服务器
  • JAVA之语法糖

    2020-09-04 10:51:04
    一、概念 编译器是一种计算机程序, 它主要的目的是将便于人编写...语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能
  • Swift 初始化语法糖,更简介的语法实现组件初始化.zip,快速初始化的超甜语法糖

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,575
精华内容 33,430
关键字:

语法糖