2013-03-08 48 views
2

由於我的其他要求,我正在搜索另一個符號p(Symbol.all_symbols)。那時候,我的IRB中也有:_next,但是不知道。我使用:`next`和`:_next`之間的區別

C:\>ruby -v 
ruby 1.9.3p374 (2013-01-15) [i386-mingw32] 

您可以檢查與下面的代碼相同的:

Arr = Symbol.all_symbols 
Arr.include?(:_next) #=> true 

誰能幫助我瞭解如何next:_next功能上的區別?

+4

有什麼背景? ':_next'是一個符號對象。 – 2013-03-08 08:20:50

+0

其實想看看'_next'呢?何時使用? – 2013-03-08 08:26:02

+0

接下來可以是一種方法,但是:_next肯定是一個符號。 – sunny1304 2013-03-08 08:26:54

回答

0

next是一種Ruby方法,:_next是一個符號。

假設你有一個數組= [1,2,3]。運行下面的命令將打印[2,6]

[1,2,3].each{ |n| next if n.even? ; puts 2*n } 

next作爲符號轉換接收機爲字符串,然後返回的下一個作爲符號串#結果。

例子:"gender".to_sym.next將返回:gendes

+0

你能提供最後一行的例子嗎? – 2013-03-08 09:01:25

+0

@AustinMullins編輯我的評論! – 2013-03-08 09:33:44

+2

':_next' - 這是幹什麼的? – 2013-03-08 09:34:47

0

紅寶石現在我已經測試了1.9.3-P374,紅寶石1.9.3-P385,紅寶石1.9.3-P392和Ruby 2.0.0-P0在我的Mac 。我無法重現這一點。我總是弄虛作假。

你有沒有在任何其他版本的Ruby上試過它?

+0

我只使用window-7。我確實只有我在帖子中提到的版本。所以我無法測試。但上面的其他用戶也證實他們也獲得了IRB。 – 2013-03-08 10:34:26

+0

您使用的是什麼版本的IRB? – 2013-03-08 10:35:39

+0

'C:\> irb --version irb 0.9.6(09/06/30)' – 2013-03-08 10:38:34

1

該符號通常不存在。

但是用你的代碼你創建它..只是提到它。

嘗試在IRB:

arr = Symbol.all_symbols 
arr.include? :_next      # => false 
arr = Symbol.all_symbols 
arr.include? :_next      # => true 

或(用新的實例)試試這個:

Symbol.all_symbols.map(&:to_s).include?('_next') # => false 
:_next 
Symbol.all_symbols.map(&:to_s).include?('_next') # => true 
+0

在我的例子中,我在第一次嘗試時就得到了'true'。我不知道你爲什麼不一樣。 :( – 2013-03-08 11:16:08

+0

不知道,對不起。 – 2013-03-08 11:17:49