Ruby 有没有简单的方法,避免修改参数变量?

chenge · 2014年05月24日 · 最后由 dorentus 回复于 2014年05月27日 · 1978 次阅读

pl 方法修改了 x,这个是不太好吧。

x='213'

def pl(x)
    # x = x.clone
    x.sub! '1', '2'
end

pl(x)
p x 
#'223'

...把函数命名成 pl! 凑合一下吧。。。

pl x.freeze or pl x.dup

建议楼主去搞个 RubyMine 来做 IDE。用很多语法的时候,直接可以跳到源码。多看下里面的注释和示例。。对新人来讲,强烈不建议直接从 sublime 甚至 vim 上手。

不想改的话为什么要用 sub!

#5 楼 @karmue 只是举个例。可以理解为笔误。 如果没什么办法的话,只好自己小心点了。很容易 bug。

匿名 #7 2014年05月27日

两个方面吧, 1) pl 的实现有问题,行为和命名不符合通常约定 2) 不想遇到这种坑的话,也很简单,比如你确信这个字符串不需要被修改,那么把 x = '213' 改成 x = '213'.freeze,后面任何企图更改这个字符串的尝试都会触发一个 RuntimeError

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