ObjC/Swift Ruby 里面有没有像 Swift 的 In-Out Parameters 的东西

blacktulip · 2014年07月01日 · 最后由 pynix 回复于 2014年07月01日 · 7202 次阅读
func swapTwoInts(inout a: Int, inout b: Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}


var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
println("someInt is now \(someInt), and anotherInt is now \(anotherInt)")
// prints "someInt is now 107, and anotherInt is now 3

就是说把外面的参数传进去能在 function 里面直接改了这样子

这明显传进去的是指针,而不是对象的副本。

我是勤劳的搬运工

def swap(var_a, var_b, vars)
   old_a = eval var_a, vars
   old_b = eval var_b, vars
   eval "#{var_a} = #{old_b}", vars
   eval "#{var_b} = #{old_a}", vars
 end

 a = 22
 b = 33
 swap ("a", "b", binding)
 p a                          # => 33
 p b                          # => 22

#2 楼 @serco 感谢... eval 略可怕 -_-

#3 楼 @blacktulip 我觉得可怕的是我之前居然不知道 binding 这个东西。。。

有了多返回值这个感觉没多大用处了,这种写法总给人不安全的感觉。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号