å˜é‡å‰é¢çš„冒å·æ˜¯ä»€ä¹ˆæ„æ€ï¼Ÿ

时间:2014-05-21 18:33:22

标签: ruby

class Library
  attr_accessor :games
  def initialize(games)
    @games = games
  end
end

gameså‰é¢æœ‰ä¸€ä¸ªå†’å·ï¼Ÿ

æ¯å½“我研究:æ„味ç€æˆ‘通常会找到人们说它是符å·çš„文章时,那么就给出一个éžå¸¸æ¨¡ç³Šçš„符å·å®šä¹‰ã€‚

3 个答案:

答案 0 :(得分:3)

为了简å•èµ·è§ï¼šç¬¦å·åªä¸è¿‡æ˜¯å¸¸é‡çš„å称。该值无关紧è¦ï¼Œä½†åªæœ‰å…·æœ‰ç›¸åŒå称的符å·å…±äº«ç›¸åŒçš„值:

  

符å·å¯¹è±¡è¡¨ç¤ºRuby解释器中的å称[...]。它们是使用:nameå’Œ:"string"文字语法以åŠå„ç§to_sym方法生æˆçš„。

有关详细信æ¯ï¼Œè¯·å‚阅Ruby docs on Symbol。

符å·çš„常用用例包括:

  • 哈希键(hsh[:foo] 0 42; hsh[:foo] #=> 42)
  • 方法或å˜é‡å,因为这些类型的对象ä¸æ˜¯Ruby的一等公民(有一个Method类代表一个方法,但那是ä¸åŒçš„东西)

请注æ„,与字符串ä¸åŒï¼Œç¬¦å·ä¸ä¼šè¢«åžƒåœ¾æ”¶é›†ã€‚è¿™æ„味ç€ï¼Œä½ åº”该é¿å…åƒ

这样的代ç 
key = :"oh-my-#{bar}" # like string interpolation

从用户(攻击者)生æˆçš„输入构建bar时。


对于attr_accessor,å‚数(在您的情况下为:games),创建一个具有相åŒå称(@games)的实例å˜é‡ä»¥åŠä¸€ä¸ªsetterå’Œgetter方法(let { {1}},然åŽè®¾ç½®å™¨l = Library.newå’Œgetter l.games=(val)å¯ç”¨ã€‚)

答案 1 :(得分:2)

Symbol class的实例。然而,到目å‰ä¸ºæ­¢æˆ‘å·²ç»çœ‹è¿‡çš„所有教程或åˆå­¦è€…指å—中都æ到并解释过它。

答案 2 :(得分:2)

冒å·è¡¨ç¤ºå˜é‡æ˜¯ç¬¦å·ã€‚符å·æ˜¯å­—符串,有一个é‡è¦åŒºåˆ«ï¼Œç¬¦å·æ˜¯ä¸å¯å˜çš„。分é…åŽå¯ä»¥æ›´æ”¹å¯å˜å¯¹è±¡ï¼Œè€Œåªèƒ½è¦†ç›–ä¸å¯å˜å¯¹è±¡ã€‚