splat net_Ruby中的Splat參數

splat net

Ruby Splat參數 (Ruby Splat Arguments)

We have learnt how to work with methods in Ruby? We are very well aware of the fact that methods may or may not consume any arguments. Let us discuss the methods which consume argument or have a predefined argument list. This argument list may contain any number of arguments but with a compulsion that you will have to pass the same number of arguments with the method as specified in the argument list of the method. But this decreases the versatility of the code, what if you have created a method which adds three numbers but the requirement of the time is to add two numbers only. Your function will fail in this case. One way is to overload the method but the thing is how many times you can overload the method because there may be n number of possibilities and that will eventually make your code redundant. Ruby has a good concept of splat arguments which allows you to pass any number of arguments in the method. Splat arguments are of two types which are discussed in the rest of the article.

我們已經了解了如何在Ruby中使用方法? 我們非常了解以下事實:方法可能會或可能不會使用任何參數。 讓我們討論消耗參數或具有預定義參數列表的方法。 該參數列表可以包含任意數量的參數,但具有強制性,您必須使用方法的參數列表中指定的方法傳遞相同數量的參數。 但是,這降低了代碼的通用性,如果您創建了一個將三個數字相加但方法是僅將兩個數字相加的方法,該怎么辦。 在這種情況下,您的功能將失敗。 一種方法是重載該方法,但問題是您可以重載該方法多少次,因為可能存在n種可能性,最終將使您的代碼冗余。 Ruby具有splat參數的良好概念, 它允許您在方法中傳遞任意數量的參數Splat參數有兩種類型,本文其余部分將進行討論。

1)單個Splat參數 (1) Single Splat Arguments)

Single splat argument is implemented with the help of * operator. You can pass Arrays with the help of them. Refer the syntax given below,

單個splat參數*運算符的幫助下實現。 您可以在它們的幫助下傳遞數組。 請參考下面給出的語法,

    def method_name( *args)
...
end

The following example will help you to understand its implementation,

以下示例將幫助您了解其實現,

def mul(*args)
pro = 1
args.each do |ar|
pro = pro * ar
end
return pro
end
puts "Product is #{mul(12,44,55,33,22,55)}"
puts "Product is #{mul(1.2,4.4,5.5,3.3,2.2,5.5)}"
puts "Product is #{mul(1,2)}"
puts "Product is #{mul(100,45)}"

Output

輸出量

Product is 1159567200
Product is 1159.5672000000002
Product is 2
Product is 4500

You can observe in the above code that we have created a method that is multiplying all the arguments which are passed in it. We are taking help from a splat operator which is allowing us to pass as many arguments we want. We have passed the different number of arguments in each method call. If this is not the case then we might have to define the different methods for the different number of arguments.

您可以在上面的代碼中觀察到,我們已經創建了一個方法,該方法將傳遞給它的所有參數相乘。 我們正在從splat運算符獲取幫助,該操作符允許我們傳遞所需的盡可能多的參數。 我們在每個方法調用中傳遞了不同數量的參數。 如果不是這種情況,那么我們可能必須為不同數量的參數定義不同的方法。

2)Double splat參數 (2) Double splat arguments)

The concept of double splat argument was introduced in Ruby 2.0. The implementation is pretty similar to a single splat argument but an add-on feature that will also work for hashes. It is implemented with the help of ** operator. Following is the syntax that will tell you how can we use double splat arguments.

在Ruby 2.0中引入了double splat參數的概念。 該實現與單個splat參數非常相似,但是其附加功能也適用于哈希。 它在**運算符的幫助下實現。 以下是語法,它將告訴您如何使用雙splat參數

    def show( **args)
...
end

Now, let us go through its example for understanding it better.

現在,讓我們通過其示例來更好地理解它。

def fruits (**fruits_and_color)
fruits_and_color.each do |frt, color|
puts "Fruits: #{frt}"
puts "Color: #{color}"
end
end
data1 = {
"Kiwi": "Green",
"Peach": "Pink",
"Banana": "Yellow",
"Grapes": "Green"
}
data2 = {
"Kiwi": "Green",
"Peach": "Pink",
"Banana": "Yellow",
"Grapes": "Green",
"Watermelon": "Blue"
}
fruits data1
fruits data2

Output

輸出量

Fruits: Kiwi
Color: Green
Fruits: Peach
Color: Pink
Fruits: Banana
Color: Yellow
Fruits: Grapes
Color: Green
Fruits: Kiwi
Color: Green
Fruits: Peach
Color: Pink
Fruits: Banana
Color: Yellow
Fruits: Grapes
Color: Green
Fruits: Watermelon
Color: Blue
=> {:Kiwi=>"Green", :Peach=>"Pink", :Banana=>"Yellow", :Grapes=>"Green", :Watermelon=>"Blue"

In the above code, you can observe that we have created two hashes data1 and data2. We have created a method fruits and we are passing these hashes with the different number of entries into the method.

在上面的代碼中,您可以觀察到我們創建了兩個哈希data1和data2 。 我們創建了一個方法結果 ,并將這些具有不同條目數的哈希傳遞給該方法。

翻譯自: https://www.includehelp.com/ruby/splat-arguments.aspx

splat net

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540611.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ajax的訪問 WebService 的方法

轉自原文 ajax的訪問 WebService 的方法 如果想用ajax進行訪問 首先在web.config里進行設置 添加在 <webServices> <protocols> <add name "HttpPost" /> <add name "HttpGet" /> </protocols> </webServices> <s…

[轉載] 使用DirectInput進行交互

參考鏈接&#xff1a; input()函數中的漏洞– Python2.x 使用DirectInput進行交互&#xff08;1&#xff09; DirectX 2008-08-10 15:11:34 閱讀169 評論0 字號&#xff1a;大 中 小 訂閱 輸入設備簡介 計算機通常使用三種輸入設備&#xff1a;鍵盤、鼠標和游…

c語言 nan 常量_NaN32常量(Julia)

c語言 nan 常量Julia| NaN32常數 (Julia | NaN32 Constant) NaN32 is a constant of the Float32 type in Julia programming language, it represents "not-a-number" value. NaN32是Julia編程語言中Float32類型的常量&#xff0c;它表示“非數字”值。 Syntax: 句…

Hyperledger Fabric 1.0 從零開始(七)——啟動Fabric多節點集群

5&#xff1a;啟動Fabric多節點集群 5.1、啟動orderer節點服務 上述操作完成后&#xff0c;此時各節點的compose配置文件及證書驗證目錄都已經準備完成&#xff0c;可以開始嘗試啟動多機Fabric集群。 首先啟動orderer節點&#xff0c;切換至orderer.example.com服務器&#xff…

[轉載] python中print()函數的用法和end=““不換行詳解

參考鏈接&#xff1a; Python | print()中的結束參數 需求&#xff1a;打印五個字符&#xff0c;在一行上 代碼&#xff1a; i 0 while i< 5 : i 1 print(i,end’’) 結果&#xff1a; 1 2 3 4 5那么問題來了&#xff0c;為什么加一個end"" 就不換…

css中圖片左右邊距_CSS中的邊距

css中圖片左右邊距CSS保證金屬性 (CSS margin property) CSS Margins are used to space around any element, for this we use "margin" property in the CSS. CSS邊距用于在任何元素之間留出空間&#xff0c;為此&#xff0c;我們在CSS中使用“ margin”屬性 。 S…

js 實現網頁顯示倒計時

用 js 來實現網頁顯示倒計時效果 1 function checkTime( time ){2 var data new Data(); // 獲取現在時間3 var nowData data.getTime(); // 轉化成毫秒數4 var time ; // 結束的時間5 var t time - nowData ;6 var HH, mm , ss 0;7 var sta "…

scala方法中的變量_Scala中的變量

scala方法中的變量Scala變量 (Scala variables) A variable is named a reference to a memory location. The location stores the data that is used by the program. 變量被稱為對存儲位置的引用。 該位置存儲程序使用的數據。 Based on the data type of the variable the…

[轉載] python[1]-print中的sep、end參數

參考鏈接&#xff1a; Python | print()中的sep參數 讀示例程序代碼時遇到的問題&#xff0c;看不懂end和sep參數。經過查找&#xff0c;基本弄清楚了。 sep&#xff1a;可以設置print中分割不同值的形式。應該是separation的縮寫。 end&#xff1a;可以設置print打印結束時最…

分區 主分區 和 擴展分區_等和分區

分區 主分區 和 擴展分區Description: 描述&#xff1a; This is a popular interview coding problem which has been featured in interview rounds of Amazon, Oyo rooms, Adobe. 這是一個受歡迎的采訪編碼問題&#xff0c;已在亞馬遜&#xff0c;Oyo房間&#xff0c;Adobe…

ORACLE 物理讀 邏輯讀 一致性讀 當前模式讀總結淺析

在ORACLE數據庫中有物理讀&#xff08;Physical Reads&#xff09;、邏輯讀&#xff08;Logical Reads&#xff09;、一致性讀&#xff08;Consistant Get&#xff09;、當前模式讀&#xff08;DB Block Gets&#xff09;等諸多概念&#xff0c;如果不理解或混淆這些概念的話&a…

[轉載] Java Formatter toString()方法與示例

參考鏈接&#xff1a; Python | 輸出格式化 output format 格式化程序類toString()方法 (Formatter Class toString() method) toString() method is available in java.util package. toString()方法在java.util包中可用。 toString() method is for the string representat…

arm tbh_TBH的完整形式是什么?

arm tbhTBH&#xff1a;說實話 (TBH: To Be Honest) TBH is an abbreviation of "To Be Honest". It is internet slang which generally used as an acronym or hashtag over the internet on social media networking sites like Facebook, Instagram, Twitter, Yo…

異常:fatal: unable to access 'https://git.oschina.net/pcmpcs/library.git/': Could not resolve host...

git fork項目時出現的異常. 原因: 我以前用的是ssh地址做的遠程通信地址&#xff0c;而這次是用的是https&#xff0c;因為很久沒用&#xff0c;所以忘記了以前是用ssh的了。解決方案一&#xff1a;復制ssh協議的地址&#xff0c;然后再關聯遠程倉庫。并且在VCS下的git下的Rem…

計數器數組_子數組計數

計數器數組Problem statement: 問題陳述&#xff1a; Given an array of N positive integers a1, a2, ..., an. The value of each contiguous subarray of a given array is the maximum element present in that subarray. The task is to return the number of subarrays…

[轉載] 列表、元組及通用序列操作

參考鏈接&#xff1a; Python | 重點數據類型 (字符串&#xff0c;列表&#xff0c;元組&#xff0c;迭代)(String, List, Tuple, Iteration) 序列是Python中最基本的數據結構&#xff08;一些基本特性類似于C中的數組模板類&#xff09;&#xff0c;序列中的每一個元素都有相…

onActivityResult()后onresume()

當你調用完一個存在的activity之后&#xff0c;onActivityResult將會返回以下數據&#xff1a;你調用時發出的requestCode、被調用activity的結果標志resultCode&#xff08;如RESULT_OK&#xff09;和其他的額外數據。我們期望的都是得到RESULT_OK&#xff0c;表示調用成功&am…

java反射用法示例_Java包| 類型,用法,示例

java反射用法示例配套 (Packages) Packages in Java is simply a mechanism to encapsulate (i.e. to put in a short and concise form) a group of classes,interfaces,enumerations, sub packages, etc. In real world, application is developed in such a manner so that …

[轉載] python 元組tuple - python基礎入門(14)

參考鏈接&#xff1a; Python元組Tuple 目錄 一.元組tuple定義 二.元組tuple查詢 三.元組tuple不支持刪除/修改數據 四.元組tuple與列表list的相互轉換 五.重點總結 在上一篇文章中我們講解了關于python列表List的相關內容&#xff0c;今天給大家解釋一下列表List的…

MaxCompute 2.0—從ODPS到MaxCompute

從ODPS到MaxCompute-阿里大數據的進化之路是一個商用大數據系統發展史&#xff0c;一個商業大數據系統要解決的問題有可靠性&#xff0c;高性能&#xff0c;安全性等等六個方面。內部產品名ODPS的MaxCompute&#xff0c;是阿里巴巴內部發展的一個高效能、低成本&#xff0c;完全…