前言:
此时各位老铁们对“js return一个函数”大体比较关心,你们都需要剖析一些“js return一个函数”的相关资讯。那么小编也在网上网罗了一些关于“js return一个函数””的相关资讯,希望朋友们能喜欢,兄弟们一起来学习一下吧!Kotlin 中的运算符函数简介。
与 Java 相比,Kotlin 中有很多——我说很多——类型的函数。我们有扩展函数、中缀函数、内联函数、高阶函数、tailrec 函数,最后是运算符函数。许多开发人员使用扩展函数和高阶函数,但很少有人了解运算符函数的用法
了解操作员功能
什么是运算符?它是一个关键字,用于执行某种运算,例如算术、逻辑和关系。
什么是函数?它是一个可以随时调用的可执行代码块。
那么什么是算子函数呢?它是由某些运算符关键字调用的可执行代码块。它们必须在类或顶级扩展函数中。
运算符函数的基本示例
运算符函数必须有一个接收器类。换句话说,它们必须在类或顶级扩展函数内部。让我们基本看一下下面的代码:
fun main() { val sampleString = "Repeat this! " // invoking String.times method here val repeatedString = sampleString * 5 println(repeatedString) /* Outputs: * Repeat this! Repeat this! Repeat this! Repeat this! Repeat this! */}operator fun String.times(n: Int): String { val sb = StringBuilder() repeat(n) { /* this refers to the receiver String */ sb.append(this) } return sb.toString()}
第 10 行是魔法发生的地方。 times 是一个特定的运算符函数,它使用星号 (*) 进行调用。 接收器类是一个字符串,它只允许一个参数 n:Int,对我们来说,它是重复的次数。
默认情况下,您不能使用代码 sampleString * 5 并期望它工作。 您需要为此定义一个运算符函数。
算子函数的实际威力
让我们首先创建一个 Matrix 类并定义一些将初始化矩阵的函数和属性。
import kotlin.math.*/** * A Matrix is a collection of numbers represented in a specific way * used for various calculations in real-world applications. * "precision" is used for the number of decimal places to be shown. */@Suppress("LocalVariableName", "FunctionName")class Matrix internal constructor(precision: Int) { /** * The Matrix itself is a 2 dimensional double array */ internal val rows = arrayListOf<DoubleArray>() /** * the number of rows of the matrix. */ internal val m: Int get() = rows.size /** * the number of columns of the matrix. * to be decided later */ internal var n = -1 /** * accepts the variable number of double values to add * as a row to the matrix */ fun row(vararg elements: Double): DoubleArray { // adds the elements to rows property } }
我已经记录了这些功能,因此更容易理解。 rows 是类的实际矩阵; 它是一个二维双精度数组。
get(Int) 运算符函数
我想使用 Matrix 类,如具有超能力的 2D 数组! 例如,如果我想访问 Matrix 类的第一行,通常我必须获取该属性。 但这不再需要了。
import kotlin.math.*/** * A Matrix is a collection of numbers represented in a specific way * used for various calculations in real-world applications. * "precision" is used for the number of decimal places to be shown. */@Suppress("LocalVariableName", "FunctionName")class Matrix internal constructor(precision: Int) { // [...] /** * Fetches the row at index n of the matrix * * @param n - index number * @return the double array - row at index n */ operator fun get(n: Int) = rows[n]}
val matrix = matrix { row(3, 5) // Kotlin-DSL function to add a row row(-2, 1)}/* usually */println(matrix.rows[0][2])/* using get operator function */println(matrix[0][2])
立即,我们需要我们的代码变得更具可读性。 矩阵后的第一个 [] 调用 get(n) 函数,其中 n 为 0。
加号(矩阵)运算符函数
有些函数和构造函数我没有展示其实现,但这确实影响了理解。
import kotlin.math.*/** * A Matrix is a collection of numbers represented in a specific way * used for various calculations in real-world applications. * "precision" is used for the number of decimal places to be shown. */@Suppress("LocalVariableName", "FunctionName")class Matrix internal constructor(precision: Int) { // [...] /** * Adds two matrices * * @param other - the second matrix in the operation. * @return the resultant matrix */ operator fun plus(other: Matrix): Matrix { assertEqualOrder(other) // makes sure both matrices have same order // private secondary constructor not shown val S = Matrix(m, n, max(_precision, other._precision)) forEachElement { S[i][j] = this[i][j] + other[i][j] } return S }}
在 plus() 函数中,我们接受一个参数,即 Matrix 本身。 我们调用 plus() 运算符并返回第三个矩阵。
val A = matrix { row(8, -5) row(3, -1)}// invoking the plus() function with the operatorval C = A + matrix { row(4, 5) row(0.3, -3.0)}
我希望你喜欢阅读我的文章。 谢谢!
标签: #js return一个函数