首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

infix函数:如何避免用括号括起所提供的参数

infix函数是一种编程语言中的函数调用方式,它允许将函数名放在参数之间,而不是传统的函数调用方式中将函数名放在参数之前或之后。在使用infix函数时,我们可以通过一些技巧来避免使用括号括起所提供的参数,具体方法如下:

  1. 使用默认参数:可以将需要传递的参数设置为函数的默认参数,这样在调用函数时就不需要使用括号括起参数了。例如,假设我们有一个infix函数add,用于将两个数相加,我们可以将第二个参数设置为默认参数,这样在调用时就不需要使用括号括起第二个参数了。
代码语言:txt
复制
infix fun Int.add(other: Int = 0): Int {
    return this + other
}

fun main() {
    val result = 5 add 3 // 不需要使用括号括起参数
    println(result) // 输出:8
}
  1. 使用扩展函数:可以通过扩展函数的方式来实现infix函数,这样可以将参数作为扩展函数的接收者,从而避免使用括号括起参数。例如,假设我们有一个infix函数concat,用于将两个字符串拼接起来,我们可以将第一个字符串作为扩展函数的接收者,将第二个字符串作为参数。
代码语言:txt
复制
infix fun String.concat(other: String): String {
    return this + other
}

fun main() {
    val result = "Hello" concat "World" // 不需要使用括号括起参数
    println(result) // 输出:HelloWorld
}

通过以上两种方式,我们可以避免使用括号括起所提供的参数,使代码更加简洁和易读。在腾讯云的产品中,没有特定与infix函数相关的产品或服务,但可以使用腾讯云的计算服务(例如云服务器、容器服务等)来支持开发和部署使用infix函数的应用程序。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kotlin中函数

中缀表示法 暂时还体会不到infix妙处!?...函数还可以用中缀表示法调用,当他们是成员函数或扩展函数,只有一个参数,用 infix关键字标注 // 给 Int 定义扩展 infix fun Int.shl(x: Int): Int { …… } /...Lambda 表达式 简述 lambda 表达式总是被大括号着, 其参数(如果有的话)在 -> 之前声明(参数类型可以省略), 函数体(如果存在的话)在 -> 后面。...val compare: (x: T, y: T) -> Int = …… //如要声明一个函数类型可空变量,请将整个函数类型括号中并在其后加上问号: var sum: ((Int, Int) -...= null Lambda 表达式语法 Lambda 表达式完整语法形式,即函数类型字面值如下: val sum = { x: Int, y: Int -> x + y } lambda 表达式总是被大括号

2.3K40

drawable用Kotlin应该这样写

/点击效果 pressed = shapeDrawable { corner(20f) solid("#84232323") } } 实现思路 xml如何转换成...return ShapeBuilder().also(builder).build() } //使用方法 val drawable = shapeDrawable{ ... } 函数括号...有2种方式infix函数(中缀表达)和property setter 1.infix函数特点和规范: Kotlin允许在不使用括号和点号情况下调用函数 必须只有一个参数 必须是成员函数或扩展函数 不支持可变参数和带默认值参数.../**为所有ImageView添加扩展infix函数 来去掉括号*/ infix fun ImageView.src(drawable: Drawable?)...个人认为如果我们大量使用infix函数,阅读困难会大大增加,所以建议函数命名必须可以直击函数功能,而且函数功能简单且单一。

93720
  • Kotlin 风格,应该这样写drawable !

    //点击效果 pressed = shapeDrawable { corner(20f) solid("#84232323") } } 实现思路 xml如何转换成...).build() } //使用方法 val drawable = shapeDrawable{ ... } 备注:dsl用法参见juejin.cn/post/695318… 中dsl小节 函数括号...2种方式infix函数(中缀表达)和property setter infix函数特点和规范: Kotlin允许在不使用括号和点号情况下调用函数 必须只有一个参数 必须是成员函数或扩展函数 不支持可变参数和带默认值参数.../**为所有ImageView添加扩展infix函数 来去掉括号*/ infix fun ImageView.src(drawable: Drawable?)...个人认为如果我们大量使用infix函数,阅读困难会大大增加,所以建议函数命名必须可以直击函数功能,而且函数功能简单且单一。

    53020

    Kotlin新手基础学习之Elvis操作符

    与Java相比,Kotlin语法更简洁、更具表达性,而且提供了更多特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以同时用在一个项目中。...kotlin 语言特性 kotlin中一切皆为对象 没有像java一般基本数据类型,数值类型为:Int, Float, Double等 函数也是对象,可作为参数和返回值 自然就会有高阶函数和lambda...: 0) } } 这里如果不用括号将 element?.hashCode() ?: 0 起来,编译器就会认为这句表达式是 (hash * 31 + element?.hashCode()) ?...ArrayDeque 不能容纳 null,一旦插入 null 就会抛出 NPE,而我们函数要求 root 为 null 时返回一个空 List,所以这里 push() 参数写成 root ?...改良 Elvis Elvis 操作符很方便,但只能连接表达式,我们可以写一个扩展函数来作为加强版 Elvis 操作符。 inline infix fun <T : Any T?.

    40520

    【Kotlin】扩展函数 ② ( 扩展属性 | 为可空类型定义扩展函数 | 使用 infix 关键字修饰单个参数扩展函数简略写法 )

    文章目录 一、扩展属性 二、可空类扩展 三、使用 infix 关键字修饰单个参数扩展函数简略写法 一、扩展属性 ---- 上一篇博客 【Kotlin】扩展函数 ( 扩展函数简介 | 为 Any 超类定义扩展函数...; val 只读类型变量 扩展属性 必须提供 getter 函数 ; var 可变类型变量 扩展属性 必须提供 getter 和 setter 函数 ; 代码示例 : 在该代码中 , 为 String...关键字修饰单个参数扩展函数简略写法 ---- 如果 扩展函数 只有 一个参数 , 并且在 扩展函数 定义时 使用了 infix 关键字修饰 , 在调用该扩展函数时 , 可以省略 接收者与函数之间点...和 参数列表括号 ; 调用 使用 infix 关键字修饰 单个参数扩展函数 : 接收者 函数函数参数 也可以使用 传统方式调用 : 接收者.函数名(函数参数) Map 中 创建 Pair...实例对象 to 函数 , 就是 被 infix 修饰 泛型扩展函数 , 最终产生是 Pair 实例对象 ; /** * 从this和[that]创建类型为[Pair]元组。

    1.9K30

    六十三、栈在括号匹配和表达式求值中应用

    有效字符串需满足: 左括号必须用相同类型括号闭合。 左括号必须以正确顺序闭合。 注意空字符串可被认为是有效字符串。 输入: "{[]}"输出: true 单调栈关键在于如何入栈和出栈。...,也可以利用python种replace函数将成对可匹配括号用空字符代替 ,之后依次进行 ,若是有效括号 ,必然经过有限次循环后 ,字符串为空 ,则最后判断字符串是否为空即可。...中缀表达式(Infix Expression)就是我们平时常用书写方式,带有括号。 前缀表达式(Prefix Expression)要求运算符出现在运算数字前面。...def infix_evaluator(infix_expression : str) -> int : '''这是中缀表达式求值函数 :参数 infix_expression:中缀表达式...:参数 operator:运算符 :参数 op1:左边操作数 :参数 op2:右边操作数 ''' if operator == '+': return

    60820

    Kotlin之Elvis 操作符

    Elvis 操作符优先级 首先要注意到,Elvis 操作符优先级是比较低,特别是比加减乘除运算符低,混合运算时一定要记得加上括号。...: 0) } } 这里如果不用括号将 element?.hashCode() ?: 0 起来,编译器就会认为这句表达式是 (hash * 31 + element?....配合使用时问题 Elvis 操作符与安全调用符 ?. 配合使用时,一定要考虑到安全调用符前后是否为空,否则就会带来流程控制混乱问题。对于任何一个下列表达式: val v = a?.b ?...ArrayDeque 不能容纳 null,一旦插入 null 就会抛出 NPE,而我们函数要求 root 为 null 时返回一个空 List,所以这里 push() 参数写成 root ?...改良 Elvis Elvis 操作符很方便,但只能连接表达式,我们可以写一个扩展函数来作为加强版 Elvis 操作符。 inline infix fun T?.

    1.3K100

    Kotlin之Elvis 操作符

    Elvis 操作符优先级 首先要注意到,Elvis 操作符优先级是比较低,特别是比加减乘除运算符低,混合运算时一定要记得加上括号。...: 0) } } 这里如果不用括号将 element?.hashCode() ?: 0 起来,编译器就会认为这句表达式是 (hash * 31 + element?....配合使用时问题 Elvis 操作符与安全调用符 ?. 配合使用时,一定要考虑到安全调用符前后是否为空,否则就会带来流程控制混乱问题。对于任何一个下列表达式: val v = a?.b ?...ArrayDeque 不能容纳 null,一旦插入 null 就会抛出 NPE,而我们函数要求 root 为 null 时返回一个空 List,所以这里 push() 参数写成 root ?...改良 Elvis Elvis 操作符很方便,但只能连接表达式,我们可以写一个扩展函数来作为加强版 Elvis 操作符。 inline infix fun T?.

    55450

    Ktorm - 让你数据库操作更具 Kotlin 风味

    Ktorm 内置了许多列定义函数,它们基本涵盖了关系数据库支持大部分数据类型。...但是,在某些情况下,我们需要在数据库中保存一些原生 JDBC 不支持特殊类型数据(比如 json),这就要求框架能给我们提供扩展数据类型方式。...天无绝人之路,Kotlin 提供infix 修饰符,使用 infix 修饰函数,在调用时可以省略点和括号,这为我们开启了另一个思路。...不仅如此,我们还能通过 infix 关键字定义自己特殊运算符,比如 PostgreSQL 中 ilike 运算符就可以定义为这样一个 infix 函数infix fun Column.ilike...我们学习了如何使用扩展函数为 Ktorm 增加更多数据类型支持、如何使用强类型 DSL 编写 SQL、如何使用运算符重载和 infix 关键字为 Ktorm 扩展更多运算符、以及如何使用实体序列

    1.7K20

    2.Python基础

    因为采用这种方式赋值时,等号两边对象都是元组 . x, y, z = 1,2,'good' . 通常元组需要用小括号起来,尽管他们是可选....__xxx 类中私有变量名 核心风格 : 避免用下划线作为变量名开始 : 因为下划线对解释器有特殊意义,而且是内建标识符使用符号,我们建议程序员避免用下划线作为变量名开始....文档 : Python还提供一个机制,可以通过doc特别变量,动态获得文档字串.在模块,类声明,或函数声明中第一个没有复制字符串可以用属性 obj.doc来进行访问, 其中obj是一个模块,类,或函数名字...或作为参数传递给函数,方法或类实例时,或者被赋值为一个窗口帝乡成员时,该对象一个新因运用,或者称作别名,就被创建(则该对象引用计数自动加1)....总之,对象引用计数在以下情况会增加 : 对象被创建 或另外别名被创建 或作为参数传递给函数(新本地引用) 或称为容器对象一个元素 减少引用计数 : 当对象引用被销毁时 , 引用计数会减小.

    85620

    《Kotin 极简教程》第8章 函数式编程(FP)(2)

    函数还可以用中缀表示法调用: 成员函数或扩展函数 只有一个参数infix 关键字标注 例如,给 Int 定义扩展 infix fun Int.shl(x: Int): Int { ... }...{ it % 2 == 1 } lambda 表达式总是被大括号 {} 着 其参数(如果有的话)在 -> 之前声明(参数类型可以省略) 函数体(如果存在的话)...J = 20 8.2.13 带接收者函数字面值 Kotlin 提供了使用指定 接收者对象 调用函数字面值功能。 使用匿名函数语法,我们可以直接指定函数字面值接收者类型。...本章小结 本章我们一学习了函数式编程简史、Lambda演算、Y组合子与递归等核心函数编程思想等相关内容。...然后重点介绍了在Kotlin中如何使用函数式风格编程,其中重点介绍了Kotlin中函数相关知识,以及高阶函数、Lambda表达式、闭包等核心语法,并给出相应实例说明。

    1.8K20

    SQL中使用符号

    在动态SQL中,用于将类方法参数文字值起来,例如将SQL代码作为%Prepare()方法字符串参数,或者将输入参数作为%Execute()方法字符串参数。...字符串值中文字单引号字符转义序列。例如:‘can’‘t’ ( ) 圆括号(40,41):用逗号分隔列表。将SQL函数参数起来。将过程、方法或查询参数列表起来。...大多数情况下,即使未提供参数参数,也必须指定圆括号。在SELECT DISTINCT BY子句中,将用于选择唯一值项或项逗号分隔列表起来。在SELECT语句中,将子查询在FROM子句中。...UNION中使用预定义查询名称。主机变量数组下标。例如,INTO:var(1),:var(2)包含嵌入式SQL代码:用于在算术运算中强制优先:3(3*5)=18。...{ } 大括号(123,125):用ODBC标量函数起来:{fn name(...)}。将时间和日期构造函数起来{d 'string'}, {t 'string'}, {ts 'string'}。

    4.6K20

    Kotlin 之美

    EJ 第17条:要么为继承而设计,并提供文档说明,要么就禁止继承 继承缺点我们已经在上条准则领略到了,更进一步地,接下来这条准则告诉我们:如没有必要提供继承,则禁止。那么如何来禁止继承?...综上,Kotlin DSL 体现代码结构有如下特点:链式调用,大括号嵌套,并且可以近似于英语句子。...高阶函数 关于高阶函数定义,参考《Kotlin 实战》: 高阶函数就是以另一个函数作为参数或返回值函数 如果用 lamba 来作为高价函数参数(此时为形参),就必须先了解如何声明一个函数形参类型...大括号放在最后 Kotlin lambda 有个规约:如果 lambda 表达式是函数最后一个实参,则可以放在括号外面,并且可以省略括号,如: person.maxBy({ p:Person ->...fun Any.to(that:Any) = Pair(this,that) 这段源码理解起来不难,infix 修饰符代表该函数支持中缀调用,然后为任意对象提供扩展函数 to,接受任意对象作为参数,最终返回键值对

    2.9K20

    耗时半天,我用 Kotlin 实现了 helang 何语言

    虽然这项功能仍是实验性质,但是这并不妨碍我们在 Kotlin 上正常使用,事实上,Kotlin 文档中这篇文章就详细介绍了如何自定义你自己 Kotlin Script。...接下来是最重要一部分,我们需要使用 | 字符来创建 u8,这里,我们用到了 infix function: infix fun Int....`|`(other: Int): u8 = this.apply { list.add(other) } infix function 指中缀函数,这允许我们通过一种特殊表达方式来近似的模拟操作符使用模式...但是你可能注意到了,我们必须使用反引号将 | 起来才可以正常使用,这是因为对于非标准字符(这也包括中文)作为函数名时,必须这么做。 那么可能会有人问了,为什么不直接重载按位或运算符呢?...two values. */ public infix fun or(other: Int): Int 最后需要注意一点是,上面的所有函数全部为顶层函数(Top Level Function),这可以方便脚本直接调用这些函数

    68820

    【Kotlin】扩展函数总结 ★ ( 超类扩展函数 | 私有扩展函数 | 泛型扩展函数 | 扩展属性 | 定义扩展文件 | infix 关键字用法 | 重命名扩展函数 | 标准库扩展函数 )

    关键字修饰单个参数扩展函数简略写法 ---- 如果 扩展函数 只有 一个参数 , 并且在 扩展函数 定义时 使用了 infix 关键字修饰 , 在调用该扩展函数时 , 可以省略 接收者与函数之间点...和 参数列表括号 ; 调用 使用 infix 关键字修饰 单个参数扩展函数 : 接收者 函数函数参数 也可以使用 传统方式调用 : 接收者.函数名(函数参数) Map 中 创建 Pair...实例对象 to 函数 , 就是 被 infix 修饰 泛型扩展函数 , 最终产生是 Pair 实例对象 ; /** * 从this和[that]创建类型为[Pair]元组。...---- Kotlin 标准库 提供功能 , 都是通过 扩展函数 实现 , 为 现有类 扩展 标准库文件 都是 在 类名基础上加上 s 来命名 , 如 : 为 Sequence 类提供扩展函数..., 定义在 Sequences.kt 代码中 ; 为 Range 类提供扩展函数 , 定义在 Ranges.kt 代码中 ; 为 Map 类提供扩展函数 , 定义在 Maps.kt 代码中 ; 标准库

    2.5K30

    eslint 效验规则

    : 0, //箭头函数用小括号起来 - 关闭 } 二、配置模板: rules: { "规则名": [规则值, 规则配置] } rules:开启规则和发生错误时报告等级,规则错误等级有以下三种...": 2,//函数参数不能重复 "no-duplicate-case": 2,//switch中case标签不能重复 "no-else-return": 2,//如果if语句里面有return,后面不能跟...对象 "no-extra-bind": 2,//禁止不必要函数绑定 "no-extra-boolean-cast": 2,//禁止不必要bool转换 "no-extra-parens": 2,//禁止非必要括号..."arrow-parens": 0,//箭头函数用小括号起来 "arrow-spacing": 0,//=>前/后括号 "accessor-pairs": 0,//在对象中使用getter/setter..."],//小括号里面要不要有空格 "space-infix-ops": 0,//中缀操作符周围要不要有空格 "space-return-throw-case": 2,//return throw case

    2.5K40
    领券