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

chenge · May 24, 2014 · Last by dorentus replied at May 27, 2014 · 1978 hits

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。

Unknow user #7 May 27, 2014

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

You need to Sign in before reply, if you don't have an account, please Sign up first.