程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> insert語句太長用StringBuilder優化一下

insert語句太長用StringBuilder優化一下

編輯:C#入門知識

insert語句太長用StringBuilder優化一下。本站提示廣大學習愛好者:(insert語句太長用StringBuilder優化一下)文章只能為提供參考,不一定能成為您想要的結果。以下是insert語句太長用StringBuilder優化一下正文


1、甚麼是代碼塊
在Ruby中,{}或do...end之間的代碼是一個代碼塊。代碼塊只能湧現在一個辦法的後邊,它緊接在辦法最初一個參數的統一行上,由yield症結字挪用。例如:

[1,2,3,4,5].each { |i| puts i }

[1,2,3,4,5].each do |i| 
puts i
end

塊變量:以yield症結字挪用block也能夠傳遞參數,block中豎線(|)之間給出的參數名用於吸收來自yield的參數。

 豎線之間(如上例中的 | i |)的變量被稱作塊變量,感化和一個正常辦法的參數一樣

2、控制代碼塊的編寫
最多見、最簡略、最富爭議、最有Ruby作風的方法是blocks。寫法以下:

array = [1, 2, 3, 4]

array.collect! do |n|
 n ** 2
end

puts array.inspect

# => [1, 4, 9, 16]

do…end組成一個block。然後把這個block經由過程collect!傳給一個數組。便可以應用block中的n來迭代數組中每一個元素。

collect!是Ruby庫裡的辦法,上面我們來寫一個本身的相似辦法iterate!

class Array
 def iterate!
  self.each_with_index do |n, i|
   self[i] = yield(n)
  end
 end
end

array = [1, 2, 3, 4]

array.iterate! do |n|
 n ** 2
end

puts array.inspect

# => [1, 4, 9, 16]

起首,我們翻開Array,並添加進iterate!辦法。辦法名以!開頭表現風險辦法,惹起留意。如今我們便可能像應用collect!一樣應用iterate!

與屬性分歧,在辦法中不須要指定block的名字,而是應用yield來挪用。yield會履行block中的代碼。同時,留意我們是怎樣把n(each_with_index以後處置的數字)傳給yield的。傳給yield的參數即對應了block中的參數(||中的部門)。如今n就可以被block挪用並在yield挪用中前往n**2。
全部挪用以下:
1、一個整數構成的數組挪用iterate!
2、當yield被挪用時,把n(第一次為1,第二次為2,…)傳給block
3、block對n停止n**2。由於是最初一行,主動作為成果前往。
4、yield獲得block的成果,並把值重寫到array裡。
5、數據中每一個對象履行雷同操作。

3、{}和do...end優先級分歧

在傳遞一個block時,應用{}傳遞的block比應用do…end的優先級要高;

為了不惹起歧義,最好應用()將參數括起來。例如:

1.upto 3 do |x|

puts x

end

是准確的,然則 1.upto 3 {|x| puts x} 編譯欠亨過,應當寫成   1.upto(3) {|x| puts x}

緣由:

1.upto 3 do…end 中block會傳遞到upto辦法外面,3會作為一個參數傳遞給upto

1.upto 3 {|x| puts x} 一句會把3當作函數名,將block傳遞到這個函數,其前往值作為upto辦法的參數,所以編譯不外,需加()。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved