[vim] 正在为scala写缩进文件,进展缓慢,因为scala的语法太灵活了,有很多种情况要考虑,最后不会搞的像php的缩进文件那么复杂吧? # [vim] scala-tools里自带的scala缩进文件太难用了…明天参考一下其它的indent文件,把它改好用些 # [c/c++] 在c/c++中,在头文件中include其它的头文件要慎重。不然的话,其它模块在引用你的头文件时,很容易因“file not found”而出现编译错误;要解决"file not found",需要增加很多的搜索路径,对编译速度也会有影响。 #
网络微博 Easwy的Twitter微博(2010-05-16)在scala user邮件列表中看到一个函数,判断一个对象是否是元组。从这个函数中,Easwy才了解到原来模式匹配(Pattern Match)也可以应用于正则表达式,这使得在scala中使用正则表达式(regex)更加容易了。另外,这个函数还展现了scala的另外两个特点:
1. 尽量使用递归解决方案,而不是使用循环。这样做的优点之一是避免使用变量,优点之二是代码简洁。是否有其它优点,Easwy仍在总结。但Easwy始终有个担心,递归会不会导致效率降低?会不会有堆栈溢出风险?
2. 使用Option类型做为函数返回值。使用Option类型的好处很明显,这样你的函数既可以返回执行失败的情况(None),也可以在执行成功时给出有用的返回值。这比使用tru/false作为返回值方便很多。
函数主体如下,为了方便讲解,在前面加了行号:
开发编程 在scala中判断一个对象是否是元组(Tuple)一个大到足以赐予你一切所求之物的政府,也强到足以剥夺你所拥有的一切。— 的确如此 # [scala] 犯了一个和运算符优先级有关的错误。原来在scala中,左移位操作(<<)的优先级小于加号(+)。看来加括号是个好习惯。 # [vim] 在vim中使用CTRL-]跳转时,如果文件已经更改了,则vim会提示文件未保存,有时候比较麻烦。有两种办法解决,一种是设置'autowrite'选项,自动保存;另一种是使能'hidden'选项。后一种有一定风险,因为在退出vim时很容易忘记还有文件未保存。 # [bash] 还没搞懂在bash脚本中什么时候该用引号,什么时候不用。如果罢ABC为空字符串,[ -n $ABC ]会返回true,而[ -n "$ABC" ]则返回false。 #
网络微博 Easwy的Twitter微博(2010-05-09)[scala] 用scala操作XML实在太方便了 # [scala] scala的正则表达式用起来比Java简单多了,用scala真的能大幅提高编码效率 # 发现google的网站管理员工具的热门搜索查询的显示格式又变了,以前是显示“某个关键词”在搜索结果中的排名,现在显示的是搜索关键词展示的次数和点击次数。看上去google有点想淡化搜索排名的意思。 # [scala] private class的public method还能被外界访问吗? 在Scala里好像是可以的。class不能被外界访问,而它的method却可以被外界访问?听起来似乎有点矛盾 # [scala] List("iii" -> 3, "iv" -> 4)会创建一个List,里面的元素是元组(tuple): List[(java.lang.String, Int)] = List((iii,3), (iv,4)) #
网络微博 Easwy的Twitter微博(2010-04-18)Bram Moolenaar在邮件列表里表示准备开发vim 7.3,预计在5月底发布第一个beta版本。
vim 7.3的功能需求还没有最后确定,Bram会根据自己能投入的时间和用户对vim新功能的投票结果来做最终决定。
文本处理 Bram将vim 7.3列入开发计划function programming似乎翻译成函数化编程法似乎比较好,不过说出来有点绕口 # [scala] 对函数编程一直比较好奇的是,函数编程里推荐使用短函数,推荐使用递归,难道不会有效率问题(函数调用时压栈退栈)和堆栈溢出问题吗? # 上条中文字引用自:http://daiyuwen.freeshell.org/gb/acl2/acl2.html # [引用]…觉得递归函数很不好理解…困难来自对函数的一个错误的比喻…把函数想象成某种形式的机器.原料就象参数一样到来;一些工作被转包给其它函数;最后完成的产品被组装好运出去,就象返回一个值. 一个更好的比喻是把函数想象成经历的过程. 在过程中递归是很自然的事情. # [scala] 要想理解函数编程,我要从函数编程的源头Lisp开始理解起了。粗看了一下,由Lisp起源的函数编程的思想与起源于C(或许更早)的命令编程思想很不同,看来我得换换脑筋了 # @hookits 我这里有的,是不是你的PATH环境变量设置的问题?你试试这个命令:"whereis php",看能不能找的到? in reply to hookits # [scala] scala里的List需要从头开始访问,如果由尾访问,则效率受List长度的影响 # [scala] 上面表达式的结果是 List[java.lang.Object] = List(vim, emacs, List(3))。很有意思,看来在scala中,任何List都可以执行连接操作。 # [scala] 之所以List[String] ::: List[Int]会生成List[Any],是因为String和Int会被转换成它们公共的父类Any。那么List("vim", "emacs") ::: List (List(3))会是什么结果呢? # [scala] 用:::连接两个类型不同的List会有什么结果?结果是生成一个类型为List[Any]的列表。例如,List("vim", "emacs") ::: List(3, 4, 5)结果为List[Any] = List(vim, emacs, 3, 4, [...]
网络微博 Easwy的Twitter微博(2010-04-11)我的第一个scala脚本完成的功能就是为文本文件添加行号,不过那个脚本中使用了变量,不太符合scala编程的思想。现在把这个脚本改造了一下,去掉var变量的使用,完全使用val值。另外,把脚本改成了需编译的程序。
LineNumber.scala程序如下
开发编程 scala学习:添加行号vim: 编辑xml文件时,想把多个文件中单独占一行的'>'与上一行合并。先用这个shell命令打开所有xml文件:vim `find . -name "*.xml" ` ,然后用vi命令: :argdo :g/^\s*>\s*$/-1j | :w # scala: 做了一个实验,对多重继承的问题已经明白了。如果trait没有调用super,那么就不会实现链式调用,而是变成了多重继承。这时,位于最后的 trait中override的那个函数版本生效,其它trait中override的函数不被调用 # scala: 做了一个实验,对多重继承的问题已经明白了。如果trait没有调用super,那么就不会实现链接调用,而是变成了多重继承。这时,位于最后的trait中override的那个函数版本生效,其它trait中override的函数不被调用 #
网络微博 Easwy的Twitter微博(2010-04-04)scala: 对trait有一个疑问,如果两个trait覆写(override)了同一个method,但没用super的方式来调用,那应该不能实现链式调用了吧?那么,这两个trait中的哪一个会被调用呢?貌似多重继承(multiple inheritance)也应该存在这类问题 # scala: trait与java中的interface不同,第一,它可以有具体实现;第二,trait可以实现链式调用。 # scala: 在决定是否使用继承时,要问自己两个问题:1) "is-a"问题,即子类所代表的概念,是否是超类所代表概念中的一员。例如,Student is a Person,所以Student类可以继承Person类; 2) 程序是否会把子类当做超类来使用? # scala: 要纠正一下昨天的说法,scala的编译器只能把尾递归的函数(tail-recursion)转化成while循环,非尾递归的递归函数还会以递归的方式调用,也就是说还是有堆栈溢出的危险。 # scala: 对没有函数编程背景的我来说,理解闭包有点困难,或许要在用过之后,对其的理解才会加深 # scala: 局部函数(local function)可以访问父函数的参数,看来应该是编译器在编译时,自动把父函数的参数加到局部函数的参数列表里了,这样Java虚拟机才能正确的执行局部函数;也正因为如此,在局部函数里无法直接访问父函数的局部变量。 # 刚看到一则大新闻,google.cn已经被转向到google.com.hk了,也就是说google搜索正式撤出中国大陆了。希望google.com还能在国内使用,不然真不知道怎么做技术了 # 看来我误解list的用法了,list是用来把user分组的,而不是把tweets分组的 # 咦,list怎么用的,又得看帮助了,真土 # scala: 没用过list,尝试一下。把Scala学习笔记发在这个list里吧 # scala: scala推荐使用递归函数来替代while循环,原本一直担心用递归函数会不会有堆栈溢出问题,现在看来是杞人忧天了。scala的编译器会把递归函数轮换成类似while的循环,在调用递归函数的地方跳回函数入口。scala让程序员做更少的事,而编译器做更多的事。 # scala: scala的语法太灵活了,它会不会被滥用从而导致不可读难维护的代码? #
网络微博 Easwy的Twitter微博(2010-03-28)
最新评论