通过Ruby中字符串中的字符来定义实例变量

时间:2012-02-12 20:17:27

标签: ruby

使用Ruby,如何通过字符串中的字符来定义实例变量?

我一直在尝试使用includes,但这显然不是内置方法。

def reply 
  @reply = @tweet.includes("@") 
end  

另外,我如何确保“@”指的是实际用户,而不仅仅是在推文中浮动或以无效用户名为前缀?如果includes有效,我会尝试:

def valid_reply 
  @valid_reply = @tweet.includes("@" + @username) 
end

1 个答案:

答案 0 :(得分:2)

你几乎做对了,你要找的方法叫做include?

def valid_reply 
  @valid_reply = @tweet.include?("@" + @username)
end

在此之后,@valid_reply将为truefalse,具体取决于@tweet是否包含子字符串@[username]

注意:此方法仅将实例变量设置为布尔值的事实听起来有点可疑。如果我必须对此进行编码,我可能会定义一个方法valid_reply?来检查@tweet是否是一个有效的回复:

def valid_reply?
  @tweet.include?("@#{@username}")
end

你也可以在这里看到表达式替换的使用(虽然在这种情况下它看起来很奇怪)。