Curry调用语句的另一种写法
fineqtbull
2009-11-19
List的方法/:定义如下,是典型的Curry定义
def /:[B](z : B)(op : (B, A) => B) : B 为了计算合计,可定义函数如下: def sum1(xs: Int*) = xs./:(0) ((x, y) => x + y) 执行如下代码可的合计结果。 scala> sum1(1, 2, 3) res9: Int = 6 同样用另一种Curry的调用方法,可定义如下函数 def sum2(xs: Int*) = (0 /: xs)((x, y) => x + y) 执行如下代码可得同样结果: scala> sum2(1, 2, 3) res10: Int = 6 第二种方式是刚知道的,根据Currry的原理可知, (0 /: xs)返回的是函数对象(op : (B, A) => B) : B,所以整个语句成立。 |
|
night_stalker
2009-11-23
葫芦函数!
def f = 1 f _ def f(a:Int)(b:Int)(c:Int)(d:Int) = a+b+c+d f(1)(2) _ |
|
night_stalker
2009-11-23
谁说参数最多 23 个? 看这个 400 参数的函数:
object F400 { def f (aaz:Int,abz:Int,acz:Int,adz:Int,aez:Int,afz:Int,agz:Int,ahz:Int,aiz:Int,ajz:Int,akz:Int,alz:Int,amz:Int,anz:Int,aoz:Int,apz:Int,aqz:Int,arz:Int,asz:Int,atz:Int)(baz:Int,bbz:Int,bcz:Int,bdz:Int,bez:Int,bfz:Int,bgz:Int,bhz:Int,biz:Int,bjz:Int,bkz:Int,blz:Int,bmz:Int,bnz:Int,boz:Int,bpz:Int,bqz:Int,brz:Int,bsz:Int,btz:Int)(caz:Int,cbz:Int,ccz:Int,cdz:Int,cez:Int,cfz:Int,cgz:Int,chz:Int,ciz:Int,cjz:Int,ckz:Int,clz:Int,cmz:Int,cnz:Int,coz:Int,cpz:Int,cqz:Int,crz:Int,csz:Int,ctz:Int)(daz:Int,dbz:Int,dcz:Int,ddz:Int,dez:Int,dfz:Int,dgz:Int,dhz:Int,diz:Int,djz:Int,dkz:Int,dlz:Int,dmz:Int,dnz:Int,doz:Int,dpz:Int,dqz:Int,drz:Int,dsz:Int,dtz:Int)(eaz:Int,ebz:Int,ecz:Int,edz:Int,eez:Int,efz:Int,egz:Int,ehz:Int,eiz:Int,ejz:Int,ekz:Int,elz:Int,emz:Int,enz:Int,eoz:Int,epz:Int,eqz:Int,erz:Int,esz:Int,etz:Int)(faz:Int,fbz:Int,fcz:Int,fdz:Int,fez:Int,ffz:Int,fgz:Int,fhz:Int,fiz:Int,fjz:Int,fkz:Int,flz:Int,fmz:Int,fnz:Int,foz:Int,fpz:Int,fqz:Int,frz:Int,fsz:Int,ftz:Int)(gaz:Int,gbz:Int,gcz:Int,gdz:Int,gez:Int,gfz:Int,ggz:Int,ghz:Int,giz:Int,gjz:Int,gkz:Int,glz:Int,gmz:Int,gnz:Int,goz:Int,gpz:Int,gqz:Int,grz:Int,gsz:Int,gtz:Int)(haz:Int,hbz:Int,hcz:Int,hdz:Int,hez:Int,hfz:Int,hgz:Int,hhz:Int,hiz:Int,hjz:Int,hkz:Int,hlz:Int,hmz:Int,hnz:Int,hoz:Int,hpz:Int,hqz:Int,hrz:Int,hsz:Int,htz:Int)(iaz:Int,ibz:Int,icz:Int,idz:Int,iez:Int,ifz:Int,igz:Int,ihz:Int,iiz:Int,ijz:Int,ikz:Int,ilz:Int,imz:Int,inz:Int,ioz:Int,ipz:Int,iqz:Int,irz:Int,isz:Int,itz:Int)(jaz:Int,jbz:Int,jcz:Int,jdz:Int,jez:Int,jfz:Int,jgz:Int,jhz:Int,jiz:Int,jjz:Int,jkz:Int,jlz:Int,jmz:Int,jnz:Int,joz:Int,jpz:Int,jqz:Int,jrz:Int,jsz:Int,jtz:Int)(kaz:Int,kbz:Int,kcz:Int,kdz:Int,kez:Int,kfz:Int,kgz:Int,khz:Int,kiz:Int,kjz:Int,kkz:Int,klz:Int,kmz:Int,knz:Int,koz:Int,kpz:Int,kqz:Int,krz:Int,ksz:Int,ktz:Int)(laz:Int,lbz:Int,lcz:Int,ldz:Int,lez:Int,lfz:Int,lgz:Int,lhz:Int,liz:Int,ljz:Int,lkz:Int,llz:Int,lmz:Int,lnz:Int,loz:Int,lpz:Int,lqz:Int,lrz:Int,lsz:Int,ltz:Int)(maz:Int,mbz:Int,mcz:Int,mdz:Int,mez:Int,mfz:Int,mgz:Int,mhz:Int,miz:Int,mjz:Int,mkz:Int,mlz:Int,mmz:Int,mnz:Int,moz:Int,mpz:Int,mqz:Int,mrz:Int,msz:Int,mtz:Int)(naz:Int,nbz:Int,ncz:Int,ndz:Int,nez:Int,nfz:Int,ngz:Int,nhz:Int,niz:Int,njz:Int,nkz:Int,nlz:Int,nmz:Int,nnz:Int,noz:Int,npz:Int,nqz:Int,nrz:Int,nsz:Int,ntz:Int)(oaz:Int,obz:Int,ocz:Int,odz:Int,oez:Int,ofz:Int,ogz:Int,ohz:Int,oiz:Int,ojz:Int,okz:Int,olz:Int,omz:Int,onz:Int,ooz:Int,opz:Int,oqz:Int,orz:Int,osz:Int,otz:Int)(paz:Int,pbz:Int,pcz:Int,pdz:Int,pez:Int,pfz:Int,pgz:Int,phz:Int,piz:Int,pjz:Int,pkz:Int,plz:Int,pmz:Int,pnz:Int,poz:Int,ppz:Int,pqz:Int,prz:Int,psz:Int,ptz:Int)(qaz:Int,qbz:Int,qcz:Int,qdz:Int,qez:Int,qfz:Int,qgz:Int,qhz:Int,qiz:Int,qjz:Int,qkz:Int,qlz:Int,qmz:Int,qnz:Int,qoz:Int,qpz:Int,qqz:Int,qrz:Int,qsz:Int,qtz:Int)(raz:Int,rbz:Int,rcz:Int,rdz:Int,rez:Int,rfz:Int,rgz:Int,rhz:Int,riz:Int,rjz:Int,rkz:Int,rlz:Int,rmz:Int,rnz:Int,roz:Int,rpz:Int,rqz:Int,rrz:Int,rsz:Int,rtz:Int)(saz:Int,sbz:Int,scz:Int,sdz:Int,sez:Int,sfz:Int,sgz:Int,shz:Int,siz:Int,sjz:Int,skz:Int,slz:Int,smz:Int,snz:Int,soz:Int,spz:Int,sqz:Int,srz:Int,ssz:Int,stz:Int)(taz:Int,tbz:Int,tcz:Int,tdz:Int,tez:Int,tfz:Int,tgz:Int,thz:Int,tiz:Int,tjz:Int,tkz:Int,tlz:Int,tmz:Int,tnz:Int,toz:Int,tpz:Int,tqz:Int,trz:Int,tsz:Int,ttz:Int) = 3 } 把它存为 x.scala,然后打开交互式解释器,输入 :l x.scala 成功…… 其实是 20 个参数,每个参数都是一个 20 元的 tuple …… |