Re: [問題] 關於scala的 symbol literals

看板Programming作者 (墳墓)時間11年前 (2013/10/02 10:14), 編輯推噓5(5016)
留言21則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《lingcandy (candyling)》之銘言: : 小妹最近剛開始接觸 scala : 在此之前 有接觸過java 但對 functional programming沒有接觸過 : 最近讀到 scala的英文教學書裡的 symbol literal 實在不是很了解 : 去爬了很多文發現他很像 ruby 裡的 symbol : 根據自己的理解 主要的概念 就是說 symbol可以自訂identifier : (如果也什麼錯誤或觀念需要釐清的可以指證我 謝謝~~~) 比較簡單的想法是把他想成和數值 literal 和字串 literal 是類似的東西, 例如你寫 1 的話會是整數 1,1L 會是長整數 1,"Hello World" 是一個字串一樣。 : compile: : scala> updateRecordByName(favoriteAlbum, "OK Computer") : <console>:6: error: not found: value favoriteAlbum : updateRecordByName(favoriteAlbum, "OK Computer") : Instead, and almost as concisely, you can pass a symbol literal: : scala> updateRecordByName('favoriteAlbum, "OK Computer") : 想請問各位大大 : 這邊有點不懂QQ 為什麼直接寫favoriteAlbum會有錯呢?? 因為寫 favoriteAlbum 的話,會去找 favoriateAlbum 這個變數/函式這些, 但你沒有宣告過這個變數,自然會找不到 'favoriteAlbum 的話,則是一個型態與 Symbol 相符的常數,所以可以丟到 updateRecordByName 裡面。 -- ~ 白馬帶著她一步步地回到中原。白馬已經老了,只能慢慢地走, 'v' Brian Hsu 但終是能回到中原的。江南有楊柳、桃花,有燕子、金魚…… // \\ ( 墳 墓 ) /( )\ 但這個美麗的姑娘就像古高昌國人那樣固執。 【白馬嘯西風】 ^`~'^ http://bone.twbbs.org.tw/blog 『那都是很好很好的,可我偏不喜歡。』 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.19.194

10/02 11:15, , 1F
喔喔!我了解了!!謝謝b大!! ^_^
10/02 11:15, 1F

10/02 11:32, , 2F
不好意思可否再請問在SCALA中assignment
10/02 11:32, 2F

10/02 11:33, , 3F
觀念,有看到文章說到Assignment result
10/02 11:33, 3F

10/02 11:34, , 4F
值是unit valu,type也是unit type,所
10/02 11:34, 4F

10/02 11:35, , 5F
以在print(n=10)的 res 是unit,但為何
10/02 11:35, 5F

10/02 11:35, , 6F
又可以在宣告變數時直接使用val n=10呢?
10/02 11:35, 6F

10/02 11:36, , 7F
=不是就是unit value 為何val n=10可以
10/02 11:36, 7F

10/02 11:36, , 8F
得到 res n:Int = 10的結果呢??
10/02 11:36, 8F

10/02 11:48, , 9F
unit type應該類似Java的null
10/02 11:48, 9F

10/02 18:30, , 10F
unit type = java/c的void,print(n=10)
10/02 18:30, 10F

10/02 18:31, , 11F
type是unit指的是print這個函數不return東
10/02 18:31, 11F

10/02 18:34, , 12F
...別管上面我搞笑了orz
10/02 18:34, 12F

10/02 18:36, , 13F
因為val n = 1是val n:Int = 1的簡寫
10/02 18:36, 13F

10/02 18:41, , 14F
val x = (n = 1)這才會得到x: Unit
10/02 18:41, 14F

10/02 18:43, , 15F
還有是assignment "expression"才是unit
10/02 18:43, 15F

10/02 18:44, , 16F
(var = value)才是unit,不是=
10/02 18:44, 16F

10/02 19:12, , 17F
val variable = expr 這是 binding,
10/02 19:12, 17F

10/02 19:12, , 18F
不是 assignment
10/02 19:12, 18F

10/02 19:12, , 19F
unit **不是** null
10/02 19:12, 19F

10/02 21:06, , 20F
欸我耍蠢了...抱歉orz
10/02 21:06, 20F

10/16 11:07, , 21F
恩恩我懂了 謝謝大家幫忙解惑^_^
10/16 11:07, 21F
文章代碼(AID): #1IIu5r62 (Programming)
討論串 (同標題文章)
文章代碼(AID): #1IIu5r62 (Programming)