看半天完全不知道你们在讲啥... 后来看 so 里面的例子,终于看明白了。真 Cool !!! 不过后面那一段有点太灵活太繁琐了。block 套 block ,又使用 block 来定义方法对象,block.call 竟然又返回一个 block, Oh, My God. 看着晕。
怎么没人回复呢??
谢谢你的鼓励。其实讲了半天,感觉还是废话多。呵呵。反而 大部分想讲的东西,甚至都没有提及。
我看社区视频都会有介绍。我是否还需要提供视频内所需的源码或者其他什么资源?这样我稍后可以准备。
视频看了一遍,最大的感受就是演讲的这个老兄,蹩脚的英文和我有得一拼... 我甚至觉得某些方面,我比他还强点,例如:某个单词他不会拼,我会...
那怎么办呢?放不上去咋办呀。我可是辛辛苦苦录了三次呀。这还是完整的是第三次,刚开个头或者三五分钟掐断的,无数次了....
我刚来社区那会儿,你就整天喊着要换,还没开始行动?
其实也无所谓,因为 lisp 实在是不熟,所以,Emacs 我向来的准则是:不管多丑陋,也不用管效率,只要实现功能就行...
我觉得我的实现应该有点多余。
你看下这个帮助:
looking-at is a built-in function in `C source code'.
(looking-at REGEXP)
Return t if text after point matches regular expression REGEXP.
This function modifies the match data that `match-beginning',
`match-end' and `match-data' access; save and restore the match
data if you want to preserve them.
我觉得是不是应该有办法直接通过 match-end, match-beginning 来获取位置呢?
谢谢你啦~ 呵呵,有时候就是需要这样提示一下,就可以搞定了。也许很简单,可是如果没有你的提示,我肯定要放弃了。
下面贴出完整的版本,参考了你的代码。会自动判断光标两侧是双引号还是单引号,并自动切换。而且也添加了简单的边界判断 (不允许跨行), 你完全可以把他绑定到一个快键上。我直接绑定到Meta + '
上了。只要在字符串上按下快键就好了。
P.S. 原先你那个版本实际使用会有问题,如果本行没有,他会替换很多行之前 (或之后) 的引号,会把程序搞乱的。
(defun swap-quote ()
"Convert the double quote to single quote, per contra"
(interactive)
(if (and (looking-back "^.*\"[^\"\n]*") (looking-at "[^\"\n]*\".*$"))
(save-excursion
(progn
(setq begin-pos (search-backward "\"" nil t))
(setq end-pos (search-forward "\"" nil t 2))
(perform-replace "\"" "'" nil nil nil nil nil begin-pos end-pos)))
(if (and (looking-back "^.*'[^'\n]*") (looking-at "[^'\n]*'.*$"))
(save-excursion
(progn
(setq begin-pos (search-backward "'" nil t))
(setq end-pos (search-forward "'" nil t 2))
(perform-replace "'" "\"" nil nil nil nil nil begin-pos end-pos))))))
@skandhas 最近还在坚持用 Emacs 么?. 你也试试。
楼主头像是谁???
这种问题,建议楼主先看看我最近发的那个帖子吧。
如果连 RESTful 都搞不清楚,routes 你绝对是越看越糊涂...
呵呵。我不像你啊。使用 Geetoo, 我在 linux 下面的折腾是有限度的。
刚刚我查了下内核编译选项,跟电源 ACPI 有关的选项都开啦. 刚刚看了下,Slackware 下面有 cpufreq-info 这个程序,Cpu 自动降频木有问题。
HP, HP!! 你知道吗?HP 发热就是这么悲剧...
看你介绍,看得晕晕乎乎,不过觉得很有意思。
又,typeof(Anything) is-a type,所以
type is-a type object is-a type
我怎么觉得应该是
又,typeof(Anything) is-a type,所以
typeof(type) is-a type typeof(object) is-a type
或者:
因此,typeof(Anything) is-a object,所以
type is-a object.
而,object is-a type, 这应该是在特殊情况下,才满足。
你把类给特殊化了。根据定义,类,就是一个普通的 object。你所以为的类变量,只不过就是一个成员变量,无非这个 object 恰好是一个类而已. P.S. 在这里不区分 class 和 type,instance 和 object
你讲的这个成员变量到底是什么东西?我怎么觉得这个概念非常像 C++ 里面的说法。C++ 里面的成员变量的确是在类当中被定义的。其实咱们谈的那个@@类变量
, 其实的确和你说的成员变量挺像的。不过我现在想确认一点,在 C++ 中,一个类的两个不同实例,他们的成员变量彼此之间有影响吗?我记得好像沒有影响,即,C++中, 每个类的实例都有自己单独的成员变量值.
, 如果是这样的话,咱们谈的还不是一个东西。
你说的成员变量只是一个相对于 Ruby 的类实例变量
不同定义方式而已。而这里谈的类变量
, 他就是类自己的变量。所有的子孙共享同一个变量,整个继承体系只有这么一个,而且这个变量只在定义类变量的那个类中
存在唯一的一份拷贝。
你可以帮我个忙吗?一直闹心,没有系统的学过 Emacs-lisp. 也怪刚开始,没有太专注于 Lisp.
废话少说,我希望实现这样一个简单函数,针对一个双引号的字符串,例如:" this is a string", 首先调用 Emacs 的 ooking-back 函数 , 获取光标之前的第一个 match-beginning 数据 (这里就是开始的那个双引号), 然后调用 looking-at, 获取光标之后的那个双引号的位置。最后,将两个 mark 之间的字符串中的双引号替换为单引号。
废话太多了,总之,我就是希望通过一个快捷键,实现以下功能:
当光标在一个字符串内时,如果这个字符串使用双引号包含,那么就换为单引号包含,如果是单引号包含,就换为双引号包含。我不知道你是否有这个需求,不过 autopair-mode 很好,就是在以上情形下,很讨厌。
如果你有其他实现或 Emacs Wiki 上类似功能的代码片段,请给我介绍一下。