Easwy的Twitter微博(2010-04-25)

  • [scala] 发现scala 2.8.rc1已经在前几天发布了,下载了准备试一下 #

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/easwy%e7%9a%84twitter%e5%be%ae%e5%8d%9a2010-04-25/

文章的脚注信息由WordPress的wp-posturl插件自动生成

Easwy的Twitter微博(2010-04-18)

  • [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)) #

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/easwy%e7%9a%84twitter%e5%be%ae%e5%8d%9a2010-04-18/

文章的脚注信息由WordPress的wp-posturl插件自动生成

Bram将vim 7.3列入开发计划

Bram Moolenaar在邮件列表里表示准备开发vim 7.3,预计在5月底发布第一个beta版本。

vim 7.3的功能需求还没有最后确定,Bram会根据自己能投入的时间和用户对vim新功能的投票结果来做最终决定。另外,Bram也在收集来自用户的patch和runtime文件。

Bram已经表示会增强Windows的安装程序,去掉lang和extra包。版本管理会采用Mercurial (在网上搜了一下,是一个基于Python的版本管理系统)。

vim注册用户赶快为自己期望的新功能去投票吧。未注册的vim用户需要交纳至少10欧元的注册费,然后到vim.org上激活自己的帐号。如果你在vim.org还没有帐号,可以在这里注册一个:http://www.vim.org/account/register.php

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/bram-plan-to-develop-vim-7-3/

文章的脚注信息由WordPress的wp-posturl插件自动生成

Easwy的Twitter微博(2010-04-11)

  • 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, 5) #

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/easwy%e7%9a%84twitter%e5%be%ae%e5%8d%9a2010-04-11-2/

文章的脚注信息由WordPress的wp-posturl插件自动生成

scala学习:添加行号

我的第一个scala脚本完成的功能就是为文本文件添加行号,不过那个脚本中使用了变量,不太符合scala编程的思想。现在把这个脚本改造了一下,去掉var变量的使用,完全使用val值。另外,把脚本改成了需编译的程序。

LineNumber.scala程序如下:

import scala.io.Source

object LineNumber {
  def main(args: Array[String]) {
    for (file <- args) {
      println("File: " + file)
      println("-" * 32)
      for (line <- addLineNumber(file))
        print(line)
    }
  }

  def addLineNumber(fileName: String): List[String] = {
    def padding(m: Int, i: Int) = " " * (m - i.toString.length)

    val lines = Source.fromFile(fileName).getLines.toList
    val maxWidth = lines.length.toString.length

    for {
      (l, i) <- lines.zipWithIndex
      j = i + 1
      line = padding(maxWidth, j) + j + " " + l
    } yield line
  }
} 

这个程序会从命令行获取要添加行号的文件名,把加了行号的文本打印到屏幕上。

用下面的命令编译该程序:

    fsc LineNumber.scala 

然后可以用下面的命令执行该程序,输出如下:

$ scala -cp . LineNumber LineNumber.scala
File: LineNumber.scala
--------------------------------
 1 import scala.io.Source
 2
 3 object LineNumber {
 4   def main(args: Array[String]) {
 5     for (file <- args) {
 6       println("File: " + file)
 7       println("-" * 32)
 8       for (line <- addLineNumber(file))
 9         print(line)
10     }
11   }
12
13   def addLineNumber(fileName: String): List[String] = {
14     def padding(m: Int, i: Int) = " " * (m - i.toString.length)
15
16     val lines = Source.fromFile(fileName).getLines.toList
17     val maxWidth = lines.length.toString.length
18
19     for {
20       (l, i) <- lines.zipWithIndex
21       j = i + 1
22       line = padding(maxWidth, j) + j + " " + l
23     } yield line
24   }
25 }
  

学习scala有大半个月了,越来越感受到了scala的简洁与强大。

更多内容,请阅读易水博客上的其它文章。

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/scala-learning-add-line-number/

文章的脚注信息由WordPress的wp-posturl插件自动生成

Easwy的Twitter微博(2010-04-04)

  • 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的函数不被调用 #

原创文章,请阅读页脚的许可方式,转载请注明:转载自易水博客 [ http://easwy.com/blog/ ]

本文链接地址: http://easwy.com/blog/archives/easwy%e7%9a%84twitter%e5%be%ae%e5%8d%9a2010-04-04/

文章的脚注信息由WordPress的wp-posturl插件自动生成