Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 如果第一个操作数不是';你的目标是什么_Kotlin - Fatal编程技术网

Kotlin 如果第一个操作数不是';你的目标是什么

Kotlin 如果第一个操作数不是';你的目标是什么,kotlin,Kotlin,我给了Kotlin一次尝试,因为它应该是一个没有某些限制的java,比如检查异常或不支持操作符重写(当然这些限制是有权利存在的,比如减少滥用或强制冗长,但这个问题不是为什么它们应该(不)存在)。所以我编写了一个简单的Vector2类,它应该支持像+-*/这样的基本运算符 当第一个和第二个操作数都来自类型Vector2时,没有问题,但当第一个操作数不是来自类型Vector2时,就有问题。举个例子: fun main(args: Array<String>) { val vect

我给了Kotlin一次尝试,因为它应该是一个没有某些限制的java,比如检查异常或不支持操作符重写(当然这些限制是有权利存在的,比如减少滥用或强制冗长,但这个问题不是为什么它们应该(不)存在)。所以我编写了一个简单的
Vector2
类,它应该支持像+-*/这样的基本运算符

当第一个和第二个操作数都来自类型
Vector2
时,没有问题,但当第一个操作数不是来自类型
Vector2
时,就有问题。举个例子:

fun main(args: Array<String>) {
    val vector = Vector2(2.0, 3.0) * 2.0
}
但是,如果两个操作数的位置像这样改变,我该怎么办:

fun main(args: Array<String>) {
    val vector = 2.0  * Vector2(2.0, 3.0)
}
但我不知道如何检索双精度值,将其与向量相乘

有人能帮忙吗?提前谢谢

定义时,接收器(调用函数的对象)在实现主体中始终可用,如
this

operator fun Double.times(vector: Vector2): Vector2 = vector * this
你可以用任何你喜欢的方式实现它,我只是反转了操作数来缩短这个例子

// In 'Vector2.kt'
operator fun Double.times(vector: Vector2) = ...
operator fun Double.times(vector: Vector2): Vector2 = vector * this