以scala的bigint為例,呼叫
val v=bigint("12321")
實際呼叫**是
另外乙個例子寫的很好就直接拿來用了
packagecom.robin.study/*** created by robinmac on 15-7-22.
*/classdefvalv3 = bigint
("123121");
}def}
deftest
}objectvarstaticvalue=1;
defcompanion=println("i'm a companion");
defstat
defnew}
varcount
= 0defincc =
}object//類名後面跟方法名,呼叫的是伴生物件的方法
println("
\n\n
println("
\n\n
vala
//類的例項後面跟方法名,呼叫的時類中定義的方法
println("
\n\n
calling code: a.test")
a.test
println("
\n\n
calling code: println(a())")
println(a
()) println("
\n\n
valb
println("b is :"+b
) println("b.test is :"+b
.test)
println("a is :"+a
//半生物件的方法呼叫類似於類的靜態方法呼叫
for(i <- 0 until 10)
//半生物件的屬性呼叫相當於類的屬性方法呼叫
)}
這個例子也很好的說明了伴生物件的用法。因為在scala中沒有靜態方法,因此預設試用class同名的object中儲存靜態方法以及靜態變數,並在類中進行使用。
根據個人當前理解,這應該僅僅是乙個約定俗成,且這個同名物件被稱為類的伴生物件。
classxiahxobjectxiahxextendsvalm
=newxiahx();
valtwopt
=m.twop(1
,_:int);
valtwop33
=m.twop2
(1) println(twopt
(1))
println(m
.cc(1)(2))
println(m
.twop2
(1)(2))
println(twop33
(4))
println(m
.add5
(3));
}
下劃線可以理解為:對任意函式a,如果其某個輸入k
引數為下劃線,則其返回乙個新的函式,新的函式的輸入為k同型別變數,輸出為a的輸出。
其他很多東西都是這個定義的變形,但大多數都符合該規律。
例如上例子中定義了add,輸入兩個int型別引數
defadd(x:int,y:int)=x+y
valadd3而後使add3成為add(3,_:int)的結果,該函式實際返回的並不是x+y的值,顯然此時只有x被賦值為3,y被下劃線_替代了。所以其返回的是乙個新的函式,該函式可認為是:=add(3
,_:int)
defadd3(y:int)=3+y
Remoting的幾個疑惑
寫完 關於remoting 之後,算是把這幾天學習remoting的思路理了一下。remoting的基本知識是很簡單的,但一旦深入,就會發現博大精深。昨天看到微軟社群的一貼廣告,說台灣的某個mvp寫了一本書,是專門講iis的安全知識的。於是想到,如果要把微軟產品的每一項功能去窮盡,可能每個看似很小的...
scala疑惑 一 ListSet新增元素
object test extends logging 這裡的 a 4呼叫了 scala.collection.immutable.listset.node this method creates a new set with an additional element.override def e...
關於ARP欺騙實驗的幾個疑惑點
上次寫了篇文章,說了關於arp欺騙後擷取內網流量的實驗。經後來反覆驗證,發現實際成功率很低,而且對於手機端似乎還並不怎麼起作用。這讓我很是疑惑,於是今天又針對drifnet進行了一點探索。探索發現了以下幾點 1 在進行了arp欺騙之後,我的電腦並不能擷取到我手機的,但是我的手機卻實實在在地已經被ar...