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

如何用2个单词创建kotlin中缀函数?

在Kotlin中,可以使用infix关键字来创建中缀函数。中缀函数是一种特殊的函数调用语法,允许我们使用更简洁的方式调用函数。

要创建一个中缀函数,需要满足以下条件:

  1. 函数必须是成员函数或扩展函数。
  2. 函数必须只有一个参数。
  3. 函数必须使用infix关键字进行修饰。

以下是一个示例,展示如何用2个单词创建一个中缀函数:

代码语言:txt
复制
infix fun String.concat(other: String): String {
    return this + other
}

在上述示例中,我们创建了一个名为concat的中缀函数,它接受一个String类型的参数other,并将其与调用函数的字符串进行拼接。使用中缀函数的语法,我们可以像下面这样调用它:

代码语言:txt
复制
val result = "Hello" concat "World"

上述调用等价于以下代码:

代码语言:txt
复制
val result = "Hello".concat("World")

中缀函数的创建可以帮助我们简化代码,使其更易读和理解。但需要注意的是,中缀函数并不适用于所有情况,应谨慎使用,避免滥用。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(SCF):https://cloud.tencent.com/product/scf
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/tencentdb
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(移动推送、移动分析等):https://cloud.tencent.com/product/mobile
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(Tencent XR):https://cloud.tencent.com/product/xr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用Kotlin高效地开发Android App(五)完结篇总结

委托模式是一项基本技巧,许多其他的模式,状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。委托模式使得我们可以用聚合来替代继承。...三. infix 中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式允许我们使用一个单词或字母来当运算符用(其本质还是函数调用),忽略调用的点和圆括号。...Kotlin中缀表达式,需要满足以下条件: 使用infix修饰 只有一个参数 其参数不得接受可变数量的参数且不能有默认值。...四. inline Kotlin 天生支持函数式编程,高阶函数和 lambda 是其一大特色。 使用高阶函数会带来一些运行时间效率的损失:每一个函数都是一个对象,并且都会捕获一个闭包。...翻看 Kotlin 的 Standard.kt 可以发现它里面的函数 with、apply、run、let 等都使用了 inline。

82420

Kotlin 之美

Kotlin 对单例模式做了更彻底的精简,简直易如反掌,可以通过 object 关键字声明一个单例类的同时创建一个实例,: object singleton{//由于同时创建了实例,因此类名使用小写...要理解 Kotlin DSL 这场魔术盛宴,就必须了解其背后用到的魔术道具——扩展函数、lambda、中缀调用和 invoke 约定。...大括号放在最后 Kotlin 的 lambda 有个规约:如果 lambda 表达式是函数的最后一个实参,则可以放在括号外面,并且可以省略括号,: person.maxBy({ p:Person ->...中缀调用 Kotlin 中有种特殊的函数可以使用中缀调用,代码风格如下: "key" to "value" // 等价于 "key.to("value") 而 to() 的实现源码如下: infix...fun Any.to(that:Any) = Pair(this,that) 这段源码理解起来不难,infix 修饰符代表该函数支持中缀调用,然后为任意对象提供扩展函数 to,接受任意对象作为参数,最终返回键值对

2.9K20
  • Kotlin Primer·第四章·Kotlin 的类特性(下)

    与 Java 混编 第四章·Kotlin 的类特性 第五章·函数与闭包 函数与闭包的特性可以算是 Kotlin 语言最大的特性了。...5.1 函数 即使 Kotlin 是一门面向对象的编程语言,它也是有函数的概念的——而不像 Java 那样,仅仅有“方法”。...回顾一下前面第二章讲述的函数声明语法: fun say(str: String): String { return str } 函数使用关键字fun声明,如下代码创建了一个名为 say() 的函数...这时候我们可以用一个单词或字母来当运算符用(其本质还是函数调用),叫做中缀表达式,所谓中缀表达式就是不需要点和括号的方法调用。...5.2 闭包 其实在 Kotlin 中与其说一等公民是函数,不如说一等公民是闭包。

    46120

    Kotlin初级(3)- - - 基础函数.md

    ,因为Kotlin中默认为public 函数没有返回值时可以省略 函数的作用范围 1.成员函数 成员函数是指在类或对象中的内部函数 例如: class Demo{ fun main(){...Kotlin中的函数有很多内置的操作符。例如array[1],[1]就相当于数组的.get(1)方法 1.操作符重载 Kotlin允许为预定义操作符提供自定义的实现。...这些操作符具有固定符号表示(+ - * /),固定的优先级precedence。...在这种情况下,子类的函数接受者类型是由运行时的实例决定的,而扩展的接受者类型始终时编译时就确定的,也就是静态的 4.infix中缀函数 中缀函数跟赋值操作符有点像,不同的是名称可以是任意的。...例如Kotlin自带的to函数,可以把两个变量凑成一个二元祖。Kotlin中可以把成员函数定义成中缀。因为中缀函数是二元的,必须有2个参数,第一个很显然是实例,第二个是函数的参数

    44230

    Kotlin热身篇: 简介与基本用法

    精彩内容不容错过~ 一. kotlin 简介 Kotlin 拥有强大的生态,因为 Kotlin 是一门跑在 Java 虚拟机上的函数式语言,完全符合 JVM 的设计规范,: 类型擦除,装箱和拆箱等等...:T fun reflectField(instance: Any?...匿名函数 kotlin 正常函数 //---------------------案例一-------------------------- a(fun b(param: Int): String {...中缀表达式 kotlin 中缀表达式只有一个参数,且用 infix 修饰的函数,这就是我们所说的自定义运算符的中缀表达式,详细代码如下: // 书 class Book{ // 传入任意类型,返回一个...总结 本文先从 kotlin 概念带大家进入 kotlin 语言,然后说了一下 kotlin 和 java8 的异同以及相互转换方式,最后对 Kotlin 基础语法进行一一阐述,: kotlin 方法和变量使用

    1.6K30

    Kotlin学习笔记

    1.6 重载调用函数 1.7 顶级函数和属性(静态的) 1.8 可变参数 和 展开操作符 1.9 中缀调用infix 1.10 本地函数 1.11 访问修饰符 一....(静态的) 在 Java 中我们需要把函数和属性放在一个类中,在 Kotlin 中我们可以把某个函数或属性直接放到某个 Kotlin 文件中,把这样的函数或属性称之为 顶级函数或属性。...infix 使用关键字 infix 修饰的函数都能够 中缀调用, 被关键字 infix 修饰的函数只能有一个参数。...Kotlin 中的 to 就是一个中缀函数: public infix fun A.to(that: B): Pair = Pair(this, that) 下面我们来对比下...to 函数的常规调用和中缀调用: 1.to("one") //普通的函数调用 1 to "one" //函数中缀调用 除了 to 函数,还有我们介绍 循环 的时候讲到的 until、downTo

    1.9K30

    Kotlin的委托属性和区间

    如果你选择复用相同的局部委托实例来在一个类中实现多属性,你需要在构造函数中初始化实例。 注意:从 Kotlin 1.1 开始,也可以声明 方法局部变量声明为委托属性。...标准委托:lazy() 针对常见情形,Kotlin 提供了一些标准委托, Delegates.notNull()、 Delegates.observable() 和 lazy()。...如果你确信属性只会在单线程(主线程)被访问,那么可以选择 LazyThreadSafetyMode.NONE 来代替,从而避免使用锁的额外开销。...这是 Kotlin 1.1 编译器可以优化的一个点。至少通过这些特定的区间类避免了装箱操作。 说明:尽量在使用时直接声明非空基本类型的区间,不要间接调用,来避免额外区间类的创建。...最后,until() 中缀函数对于迭代也很有用,该函数(执行结果)不包含最大值。

    1.4K70

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

    函数还可以用中缀表示法调用: 成员函数或扩展函数 只有一个参数 用 infix 关键字标注 例如,给 Int 定义扩展 infix fun Int.shl(x: Int): Int { ... }...用中缀表示法调用扩展函数: 1 shl 2 等同于这样 1.shl(2) 8.2.4 函数参数 函数参数使用 Pascal 表示法定义,即 name: type。...,显式声明返回类型是可选的: fun double(x: Int) = x * 2 8.2.7 函数作用域 在 Kotlin函数可以在文件顶层声明,这意味着你不需要像一些语言 Java、C# 或...Scala 那样创建一个类来保存一个函数。...} 我们使用 reified 修饰符来限定类型参数,现在可以在函数内部访问它了, 几乎就像是一个普通的类一样。由于函数是内联的,不需要反射,正常的操作符 !is 和 as 现在都能用了。

    1.8K20

    Kotlin之基本语法

    = double(2) 如果在其他类需要调用调用成员函数: Sample().foo() // 创建Sample类的实例,调用foo方法 中缀符号 在满足如下条件时:它们是成员函数或者是扩展函数,只有一个参数...函数可以通过中缀符号进行调用。...比如: //给 Int 定义一个扩展方法 infix fun Int.shl(x: Int): Int { ... } 1 shl 2 //用中缀注解调用扩展函数 1.shl(2) Unit类型 如果函数不会返回任何有用值..., 2, 3) val list = asList(-1, 0, *a, 4) 函数范围 Kotlin 中可以在文件顶级声明函数,这就意味者你不用像在Java,C#或是Scala一样创建一个类来持有函数...除了顶级函数Kotlin 函数可以声明为局部的,作为成员函数或扩展函数Kotlin 支持局部函数,比如在一个函数包含另一函数

    1.1K70

    Kotlin之基本语法

    = double(2) 如果在其他类需要调用调用成员函数: Sample().foo() // 创建Sample类的实例,调用foo方法 中缀符号 在满足如下条件时:它们是成员函数或者是扩展函数,只有一个参数...函数可以通过中缀符号进行调用。...比如: //给 Int 定义一个扩展方法 infix fun Int.shl(x: Int): Int { ... } 1 shl 2 //用中缀注解调用扩展函数 1.shl(2) Unit类型 如果函数不会返回任何有用值..., 2, 3) val list = asList(-1, 0, *a, 4) 函数范围 Kotlin 中可以在文件顶级声明函数,这就意味者你不用像在Java,C#或是Scala一样创建一个类来持有函数...除了顶级函数Kotlin 函数可以声明为局部的,作为成员函数或扩展函数Kotlin 支持局部函数,比如在一个函数包含另一函数

    1.1K80

    Kotlin开发笔记之委托属性与区间(译)

    如果你选择复用相同的局部委托实例来在一个类中实现多属性,你需要在构造函数中初始化实例。 注意:从 Kotlin 1.1 开始,也可以声明 方法局部变量声明为委托属性。...标准委托:lazy() 针对常见情形,Kotlin 提供了一些标准委托, Delegates.notNull() 、 Delegates.observable() 和 lazy() 。...如果你确信属性只会在单线程(主线程)被访问,那么可以选择 LazyThreadSafetyMode.NONE 来代替,从而避免使用锁的额外开销。...这是 Kotlin 1.1 编译器可以优化的一个点。至少通过这些特定的区间类避免了装箱操作。 说明:尽量在使用时直接声明非空基本类型的区间,不要间接调用,来避免额外区间类的创建。...最后,until() 中缀函数对于迭代也很有用,该函数(执行结果)不包含最大值。

    67110

    干货 | 实现一个属于你的“语言”-携程Kotlin DSL开发与实践

    可以是定制语法,或者遵循另外一种语法,XML、JSON。...内部DSL:通常是基于通用编程语言实现,具有特定的风格, iOS 的依赖管理组件 CocoaPods 和 Android 的主流编译工具 Gradle。...2.4、创建一个自己的DSL Kotlin DSl的优势这么多,那么如何自定义一个DSL?...kotlin的扩展函数、高阶函数、lambda表达式、中缀调用、invoke 约定和函数小括号省略等特性,使得Kotlin编写DSL尤为顺畅,我们可以使用这些特性来实现自己的“领域特定语言”。...= "") 定义中间类,主要是为了实现直接DSL方式添加department的效果 创建trip的DSL写法 最终调用效果: result结果: Trip(name=Trip, address

    1.6K10

    数据结构与算法-(7)---栈的应用-(3)表达式转换

    我们通常看到的表达式:B*C , 很容易就知道是B乘以C 像 * 这种操作符( operator ) 介于操作数 ( operand )中间的表示法,称为 "中缀" 表示法....But sometimes 中缀表示法会 case confusion(引起混淆), "A + B * C" 是A+B然后再乘以C 还是B*C然后再加A?...让我们先看看这些前中缀和后缀表达式 中缀表达式 前缀表达式 后缀表达式 A + B * C + D + + A * B C D A B C * + D + ( A + B ) * ( C + D )...利用中缀转后缀的操作流程 后面的算法描述中,约定中缀表达式是由空格隔开的一系列单词(token)构成, 操作符单词包括*/+-() 而操作数单词则是单字母标识符A、B、C等。...1.首先,创建空栈opstack用于暂存操作符,空表postfixList用于保存后缀表达式 2.将中缀表达式转换为单词(token)列表 A + B*C = split => ['A', '+

    13510

    Kotlin 编码规约

    验证风格指南中描述的其他问题(命名约定)的附加探查项默认已启用。...不要只是为了保存“Foo 的所有扩展函数”而创建文件。...函数、属性与局部变量的名称以小写字母开头、使用驼峰而不使用下划线: fun processDeclarations() { …… } var declarationCount = …… 例外:用于创建类实例的工厂函数可以与要创建的类具有相同的名称...根据需要,使用局部扩展函数、成员扩展函数或者具有私有可视性的顶层扩展函数。 使用中缀函数 一个函数只有用于两个角色类似的对象时才将其声明为中缀函数。良好示例如:and、 to、zip。...如果一个方法会改动其接收者,那么不要声明为中缀形式。 工厂函数 如果为一个类声明一个工厂函数,那么不要让它与类自身同名。优先使用独特的名称,该名称能表明为何该工厂函数的行为与众不同。

    3.1K22

    drawable用Kotlin应该这样写

    那么通过代码直接创建这些drawable,可以在一定程度上降低这些副作用。本篇介绍用kotlin DSL简洁的语法特性来实现常见的drawable. 代码对应效果预览 ? ? ? ? ?...通过上面封装已经实现了dsl的写法,通常setBackground可以通过setter简化,但是我发现由于有些api设计还需要加括号,这样不太kotlin: //容易阅读 iv1.background...有2种方式infix函数(中缀表达)和property setter 1.infix函数特点和规范: Kotlin允许在不使用括号和点号的情况下调用函数 必须只有一个参数 必须是成员函数或扩展函数 不支持可变参数和带默认值参数...个人认为如果我们大量使用infix函数,阅读困难会大大增加,所以建议函数命名必须可以直击函数功能,而且函数功能简单且单一。...2.property setter方式,主要使用kotlin可以简化setter为 变量 =来去括号: /**扩展变量*/ var ImageView.src: Drawable get() =

    92720

    数据结构之堆栈

    若堆栈非空,则函数返回1;否则函数返回0。 入栈StackPush(S, x):在堆栈S的当前栈顶插入数据元素x。 出栈StackPop(S, d):把堆栈S的当前栈顶数据元素删除并由参数d带回。...,用来判别表达式中括号是否正确配对,并设计一个测试主函数。...,O1为“)”,而O2为“(”情况,即为中缀表达式语法错误!...算法步骤: (1)设置一个堆栈,初始时将栈顶元素置为# (2)顺序读入中缀算术表达式,当读到的单词为操作数是就将其输出,并接着读下一个单词 (3)单读到的单词为运算符时,令a为当前栈顶运算符的变量,b为当前扫描读到运算符的变量...若优先级 a<b,则将b的值进栈,然后接着读下一个单词 若优先级 a>b,则将a退栈并作为后缀表达式的一个单词输出,然后比较新的栈顶元素运算符a的优先级与b的优先级。

    93121
    领券