成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

Scala method(方法) 和 functio(函數) 的區別

在我沒有學習 scala 的時候,主要用 java 和 python 做日常工作開發,印象中,沒有特別的刻意的去區分 method 和 function 的區別,這個關系,正如我們日常生活中,沒有刻意的去區分質量和重量。但是,他們之間,的確是有所不同的,這些不同也是建立在他們之間有聯系的基礎之上!

如何定義

首先,還是引用英文原文來看看他們在定義上的區別和聯系吧:

A Function Type is (roughly) a type of the form (T1, …, Tn) => U, which is a shorthand for the trait FunctionN in the standard library. Anonymous Functions and Method Values have function types, and function types can be used as part of value, variable and function declarations and definitions. In fact, it can be part of a method type.

A Method Type is a non-value type. That means there is no value – no object, no instance – with a method type. As mentioned above, a Method Value actually has a Function Type. A method type is a def declaration – everything about a def except its body.

例子:

scala> def m1(x:Int) = x+3  m1: (x: Int)Int        scala> val f1 = (x: Int) => x+3  f1: Int => Int = <function1>

看到沒,方法定義和函數定義是不是在scala的解析器signature上就有顯示了,def m1(x: Int) = x+3就是一個簡單的method的定義。signature中m1: (x: Int)Int 表示method m1有一個參數Int型參數x,返回值是Int型。

val f1 = (x: Int) => x+3則是function的定義,解析器的signature中f1: Int => Int = <function1>表示function f1的method體接受一個Int型的參數,輸出結果的類型是Int型。

從上面的例子,得出一個總結:

方法是一個以def開頭的帶有參數列表(可以無參數列表)的一個邏輯操作塊,這正如object或者class中的成員方法一樣。

函數是一個賦值給一個變量(或者常量)的匿名方法(帶或者不帶參數列表),并且通過=>轉換符號跟上邏輯代碼塊的一個表達式。=>轉換符號后面的邏輯代碼塊的寫法與method的body部分相同。

其他區別

method 可以作為一個表達式的一部分出現(調用函數并傳參),但是 method(帶參方法)不能作為最終的表達式(無參方法可以,但是這個就成了方法調用,因為 scala 允許無參方法調用時省略()括號),而 function 可以作為最終的表達式出現。

scala> m1  <console>:12: error: missing arguments for method m1;  follow this method with `_' if you want to treat it as a partially applied function         m1         ^    scala> f1  res1: Int => Int = <function1>

method 可以沒有參數列表,參數列表也可以為空。但是 function 必須有參數列表(也可以為空)。方法名意味著方法調用,函數名只是代表函數自身:

scala> def m2 = 100;  m2: Int    scala> def m3() = 1000;  m3: ()Int    scala> var f2 = => 100;  <console>:1: error: illegal start of simple expression  var f2 = => 100;           ^    scala> var f2 =()=> 100;  f2: () => Int = <function0>    scala> m2  res2: Int = 100    scala> m3  res3: Int = 1000    scala> m3()  res4: Int = 1000    scala> f2  res5: () => Int = <function0>    scala> f2()  res6: Int = 100  

在函數出現的地方我們可以提供一個方法。

這是因為,如果期望出現函數的地方我們提供了一個方法的話,該方法就會自動被轉換成函數。該行為被稱為 ETA expansion。

注意:

期望出現函數的地方,我們可以使用方法。

不期望出現函數的地方,方法并不會自動轉換成函數。

在 scala 中操作符被解釋稱方法: 

 

  • 前綴操作符:op obj 被解釋稱 obj.op
  • 中綴操作符:obj1 op obj2 被解釋稱 obj1.op(obj2)
  • 后綴操作符:obj op 被解釋稱 obj.op
scala> val ml = List(1,2,3,4)  ml: List[Int] = List(1, 2, 3, 4)    scala> ml.map((x)=>2*x)  res0: List[Int] = List(2, 4, 6, 8)    scala> def m(x:Int) = 2*x  m: (x: Int)Int    scala> ml.map(m)  res1: List[Int] = List(2, 4, 6, 8)    scala> def m(x:Int) = 3*x  m: (x: Int)Int    scala> ml.map(m)  res2: List[Int] = List(3, 6, 9, 12)

可以在方法名后面加一個下劃線強制變成函數。

注意: 方法名與下劃線之間至少有一個空格喲!

scala> def m3(x: Int): Int = x * x * x  m3: (x: Int)Int    scala> val f3 = m3_  <console>:10: error: not found: value m3_         val f3 = m3_                  ^    scala> val f3 = m3 _  f3: Int => Int = <function1>    scala> f3(3)  res0: Int = 27

原文地址:https://www.cnblogs.com/shihuc/p/5082701.html

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
精品国产乱码久久久久久下载 | 内射白嫩少妇超碰| 女儿的朋友7中汉字晋通话| 欧美日韩精品一区二区在线视频| 强被迫伦姧惨叫VIDEO| 日韩无码视频二区| 午夜精品影视国产一区在线麻豆 | 国色天香A区与B区| 久久精品成人免费国产片| 免费无码又爽又刺激软件下载直播| 欧美一级草B内射| 少妇特殊按摩高潮爽翻天| 亚洲AV无码国产精品色午夜| 亚洲字幕AV一区二区三区四区| 中国少妇内射XXXXⅩHD| 波多野结衣一区二区三区高清 | 久久青草精品38国产| 欧美一区二区放荡人妇| 天堂VA欧美ⅤA亚洲VA老司机| 亚洲国产成人精品无码一区二区 | 西方38大但人文艺术| 亚洲熟妇真实自拍另类| JJZZJJZZ高潮喷水妇女| 国产精品久久久久成人| 久久久久精品久久九九| 欧洲女人牲交视频免费| 无套内射GIF舔B吃奶| 亚洲中文字幕精品无码AV | 十八禁无码免费网站| 无码人妻出轨与黑人中文字幕| 亚洲欧洲精品成人久久曰影片| 7777精品伊人久久久大香线蕉 | 日韩人妻AV在线| 亚欧洲乱码视频一二三区| 亚洲一本大道无码AV天堂| JAPANESE国产在线看| 国产精品一区二区香蕉| 久久男人AV资源网站无码| 人妻av无码一区二区| 无遮挡色视频真人免费不卡| 夜夜高潮次次欢爽AV女| 爆乳一区二区三区无码| 公车上玩弄白嫩少妇| 国内AI明星造梦鞠婧祎MV| 美女扒开腿让男人桶爽免费| 色欲AV永久无码精品无码蜜桃| 亚洲精品无码午夜福利理论片| 999国内精品永久免费观看| 国产精品国色综合久久| 久久午夜无码鲁丝片午夜精品| 日韩精品无码免费一区二区三区| 亚洲不卡无码AV中文字幕| 一本无码中文字幕在线观| 动漫AV成人无码精品网站| 国产一区二区精品久久| 欧美激情XXXX| 亚洲AⅤ无码日韩AV中文AV伦| 18禁勿入免费网站入口不卡| 国产精品天干天干| 女技师强制高潮18XXXX按摩| 我把护士日出水了视频| 亚洲精品国产欧美一二区| 99久久精品国产一区二区| 国产乱人伦偷精品视频| 欧美丰满美乳XXⅩ高潮www| 新版АⅤ资源新版在线天堂| 99久久国产热无码精品免费| 国产一区二区精品丝袜| 人人超人人超碰超国产| 亚洲熟妇真实自拍另类| 国产98涩在线 | 欧洲| 蜜桃臀无码内射一区二区三区 | 亚洲欧美日韩愉拍自拍| 大地韩国日本HD免费完整| 久久人人玩人妻潮喷内射人人| 天天摸天天透天天添| 18一20亚洲GAY无套| 护士长在办公室躁BD| 日韩视频一二三区2021| 中文字幕成人精品久久不卡| 国产亚洲日韩欧美另类丝瓜APP| 普通话JIZZYOU中国少妇| 亚洲人成无码区在线观看| 国产AV激情久久无码天堂| 免费无码一区二区三区蜜桃大| 亚洲AV片在线观看| 荡公乱妇HD在线播放BD| 免费人妻精品一区二区三区| 亚洲AV综合色区无码三区30p| 粗长巨龙挤进新婚少妇| 男人J桶进女人P无遮挡在线观看| 亚洲精品欧美二区三区中文字幕| 伴郎粗大的内捧猛烈进出| 乱码精品一区二区三区| 亚洲成A人片在线观看无码3D| 国产JJIZZ女人多水喷水| 欧美一级 片内射欧美A999| 永久免费无码Av成人性色AV| 国产真实乱XXXⅩ视频| 斯诺克直播在线观看高清直播| BBW与WB和老妇女| CHINESE中国丰满熟妇| 久久人爽人人爽人人片AV| 亚洲AV日韩AV高潮喷无码| 丁香花高清在线观看完整版| 欧美人与动性XXXXBBBB| 樱桃空空人妻无码内射| 精品国产一区二区三区色欲| 玩弄丰满少妇XXXXX性多毛| 差差差很疼30分钟的视频| 欧美 丝袜 自拍 制服 另类| 一米八五插一米六可以吗| 国产裸模视频免费区无码| 日韩一区二区在线视频| 51CG今日吃瓜热门大瓜| 旧里番6080在线观看| 亚洲精品成人区在线观看| 国产偷自视频区视频| 无码精品国产一区二区免费| 从你的全世界路过| 人妻无码中文字幕一区二区三区| 19禁在线观看漫画视频| 巨胸狂喷奶水WWW自慰网站| 亚洲国产欧美在线人成| 国内精品久久久久久久久齐齐| 无码国产69精品久久久孕妇| 丰满老熟好大BBB| 色先锋AV资源中文字幕| 成人精品无码一区二区三区| 人妻人人做人碰人人添| xxxx国产精品| 欧美黑人XXXX性高清版| 51精品国产人成在线观看| 久久久久久A亚洲欧洲AV| 亚洲AV无码一区二区三区网站| 国产美女裸体无遮挡免费视频 | 女女互揉吃奶揉到高潮视频| 18禁黄网站禁片免费观看国产| 美女用香蕉练口活视频| 中文成人久久久久影院免费观看| 精品久久久久久无码人妻蜜桃| 亚洲VA中文字幕无码毛片 | 伦人伦XXXX国语对白| 一本无码人妻在中文字幕免费 | 免费观看18禁欲无遮挡奶水下| 中国高清WINDOWS视频软件| 久久久久国色AV免费看| 夜夜躁日日躁狠狠久久AV| 老熟妇午夜毛片一区二区三区| 在线 | 麻豆国产传媒| 脔到她哭H粗话HWWW男男动漫| 坐公交车居然被弄了2个小时| 男生J桶进女人P又色又爽又黄| 98久9在线 | 免费| 人妻护士在线波多野结衣| 成人欧美一区二区三区黑人 | 欧美成人精品午夜免费影视| CHINA中国人CHINESE| 人人添人人妻人人爽频| 高潮喷奶水在线播放视频| 五十熟妇日本熟妇久久| 极品白嫩的小少妇| 亚洲AV永久无码国产精品久久| 精品人妻一区二区三区四区在线| 亚洲国产成人久久精品软件| 久久精品亚洲综合专区| 综合在线视频精品专区| 人人妻人人澡人人爽| 国产成人亚洲精品无码AV大片| 小妖精含牢了我喂饱你| 久久99精品久久久久久久清纯| 中文在线官网在线| 日本VA欧美VA欧美VA精品| 把腿张开我要cao死你在线观看 | 中国GAY片男同志免费网站| 某处紧密的结合在一起| 成年女人粗暴毛片免费观看| 无码人妻丰满熟妇区五十路| 精品国偷自产在线视频99| 中文字幕人成人乱码亚洲影| 欧美熟妇ⅤIDEOS| 国产高清中文版HD中字| 亚洲精品55夜色66夜色| 内地CHINA高潮VIDEO| JIZZJIZZ日本护士| 少妇高潮潮喷到猛进猛出小说| 国内精品伊人久久久久影院对白| 伊人久久无码大香线蕉综合| 人妻熟妇乱又伦精品无码专区| 国产高清中文版HD中字| 亚洲中文字幕A∨| 人人妻久久人人澡人人爽人人精品| 国产精品自在线拍国产电影| 一面亲上边一面膜下边文字的含义 | 亚洲欧美偷拍内射白浆| 欧美性XXXXX极品少妇| 国产精品无码无在线观看| 中国熟妇老熟女妓女9| 人妻AV综合天堂一区| 国产无遮挡又黄又爽无VIP|