C++ 什么是C++;Kotlin上的指针?
我有一个交换两个变量值的方法C++ 什么是C++;Kotlin上的指针?,c++,kotlin,C++,Kotlin,我有一个交换两个变量值的方法 void switchValue(int* a , int* b){ //logic here... } C++的工作级别低于Kotlin,但我可以在Kotlin上执行此操作吗 使用Kotlin或Java中的函数不可能做到这一点,因为引用只能通过值传递。(除非您对使用包装器类感到满意,并交换两个包装器实例所引用的内容,否则这将很笨拙。) 这可能是交换两个变量值的最简单方法: var x = 0 var y = 1 //swap: x = y.also
void switchValue(int* a , int* b){
//logic here...
}
C++的工作级别低于Kotlin,但我可以在Kotlin上执行此操作吗 使用Kotlin或Java中的函数不可能做到这一点,因为引用只能通过值传递。(除非您对使用包装器类感到满意,并交换两个包装器实例所引用的内容,否则这将很笨拙。) 这可能是交换两个变量值的最简单方法:
var x = 0
var y = 1
//swap:
x = y.also { y = x }
编辑:稍加修改。您可以使用反射对属性进行排序。不过,这对局部变量不起作用
fun <T> swap(first: KMutableProperty0<T>, second: KMutableProperty0<T>) {
first.set(second.get().also { second.set(first.get()) })
}
swap(::x, ::y)
fun swap(第一个:KMutableProperty0,第二个:KMutableProperty0){
first.set(second.get()。也是{second.set(first.get())})
}
交换(::x,::y)
在我看来,这种做法(远程更改变量值)虽然在C/C++中很常见,但应该避免。在Kotlin或Java中使用函数是不可能做到这一点的,因为引用只能通过值传递。(除非您对使用包装器类感到满意,并交换两个包装器实例所引用的内容,否则这将很笨拙。) 这可能是交换两个变量值的最简单方法:
var x = 0
var y = 1
//swap:
x = y.also { y = x }
编辑:稍加修改。您可以使用反射对属性进行排序。不过,这对局部变量不起作用
fun <T> swap(first: KMutableProperty0<T>, second: KMutableProperty0<T>) {
first.set(second.get().also { second.set(first.get()) })
}
swap(::x, ::y)
fun swap(第一个:KMutableProperty0,第二个:KMutableProperty0){
first.set(second.get()。也是{second.set(first.get())})
}
交换(::x,::y)
在我看来,这种做法(远程更改变量值)虽然在C/C++中很常见,但应该避免。切换两个变量的值是什么意思?你的意思是交换?也许你正在寻找通过引用传递?注意:Kotlin问题中的交换函数根本没有有效的答案…有关Kotlin中通过引用传递的更多信息,请参阅(TL;DR这是一个黑客,请尝试远离这类事情)“切换两个变量的值”是什么意思?你的意思是交换?也许你在寻找通过引用传递?注意:Kotlin问题中的交换函数根本没有有效的答案…有关Kotlin中通过引用传递的更多信息,请参阅(TL;DR,这是一个黑客,请尝试远离这类事情)我不是Kotlin专家,但这看起来应该行得通——不确定为什么唐沃提不是科特林专家,但这看起来应该行得通——不确定为什么唐沃提会投票