我沒有得到答案的下面的練習從哈特爾的Rails的教程:Railstutorial(邁克爾·哈特爾):練習4.6
通過4.10與適當的 方法取代問號,結合分裂,洗牌,並加入寫一個函數, 洗牌給定的字符串中的字母。
4.10:
>> def string_shuffle(s)
>> s.split('').?.?
>> end
=> nil
>> string_shuffle("foobar")
有人可以幫我嗎?
非常感謝!
我沒有得到答案的下面的練習從哈特爾的Rails的教程:Railstutorial(邁克爾·哈特爾):練習4.6
通過4.10與適當的 方法取代問號,結合分裂,洗牌,並加入寫一個函數, 洗牌給定的字符串中的字母。
4.10:
>> def string_shuffle(s)
>> s.split('').?.?
>> end
=> nil
>> string_shuffle("foobar")
有人可以幫我嗎?
非常感謝!
我認爲只是增加洗牌,並加入像你說的應該工作:
def string_shuffle(s)
s.split('').shuffle.join('')
end
的方法,由左到右工作。分割('')將單詞分割成單獨的字母數組。洗牌然後隨機化他們。並加入('')反轉分割,並將其重新放回到一個單詞中。 ('')是兩個單引號,不是一個雙引號。如果你分割(「」)和連接(「」),它也應該工作,因爲你只是想分割和連接每個字符。
好的。並與真正的價值觀合作?在哪裏放置「放置」或類似的東西?在哪裏申報價值? – christophe
ruby中的方法將返回最後一行,所以字符串將被返回。你可以只說「puts string_shuffle(s)」,你會打印混洗的字符串。然而,正如在評論中重寫的那樣,你實際上正在返回一個新字符串,其中原始字符串的字母被混洗。對於大多數情況下,這將基本上做你想要的。唯一的情況是,如果您定義了一個變量並對其進行混洗,那麼該變量仍將保持其原始值。在這種情況下,您需要執行以下操作: s =「word」 s = string_shuffle(s) – kindofgreat
@christophe一旦您有如上定義的'string_shuffle'方法,就可以將其稱爲'string_shuffle(「foobar 「)'。每次你打電話時它會給出不同的輸出。 Rails教程祝你好運。稍後請查閱http://rubykoans.com/(在同一部分末尾推薦),以加強您的ruby技能。 –
使用這種方法,你不能準確地洗牌給定的字符串。事實上,你正在返回一個NEW字符串,原始字符串的字母被混洗。 – rewritten