[英]Ruby “.downcase! ” and “downcase” confusion
我剛剛開始Ruby編程。 我讀過小寫和小寫之間的區別! 在Ruby中 。 但是我在實踐中遇到一個有趣的問題,下面是代碼:
a = "lower"
a = a.downcase
print a
Compiler return: lower
但是,如果我嘗試:
a = "lower"
a = a.downcase!
print a
Compiler return: nil
但是,如果“ a = LOWER”,則兩個版本的代碼均返回“ lower”
小寫! →str或nil
將str的內容轉換為小寫, 如果未進行任何更改 ,則返回nil 。 注意:大小寫替換僅在ASCII區域有效。
文檔: String#downcase!
a。小寫! 直接修改“ a”-您無需將結果分配給“ a”。
1.9.3p362 :003 > a = "A"
=> "A"
1.9.3p362 :004 > a.downcase!
=> "a"
1.9.3p362 :005 > puts a
a
=> nil
1.9.3p362 :006 > a = "A"
=> "A"
1.9.3p362 :007 > a.downcase
=> "a"
1.9.3p362 :008 > puts a
A
=> nil
分配變量= variable.downcase的危險! 就是如果變量已經小寫,那么您只需將變量設置為nil-可能不是您的意圖。
1.9.3p362 :001 > variable = 'a'
=> "a"
1.9.3p362 :002 > variable = variable.downcase!
=> nil
1.9.3p362 :003 > puts variable
=> nil
downcase!
是一種就地修改字符串的方法(而downcase
會創建一個新的字符串實例)。
downcase!
的返回值downcase!
如果未修改字符串或新修改的字符串,則為nil
。 在后一種情況下, a
的字符串a
被覆蓋。 使用downcase!
的正確方法downcase!
是:
a = "LOWER"
a.downcase! # no assignment to a here
print a # prints "lower", the original "LOWER" is lost
對於downcase
:
a = "LOWER"
print a.downcase # a is still "LOWER", but "lower" gets printed
一般的經驗法則:如果方法以!
結尾!
,該方法會覆蓋變量中的值或修改狀態。
另外,在您的情況下:
print "lower".downcase! # prints nil, because "lower" is already written in lower case
小寫! 如果未進行任何更改,將返回nil。 您可以使用ri downcase!
檢查它ri downcase!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.