Hello World
Spiga

标签:趣味编程

趣味编程:在JavaScript中实现简单的yield功能(2 - 循环支持及解释执行)

2010-06-11 12:41 by 老赵, 1345 visits
摘要:在上一篇文章里,我们构造了$yield和$yieldSeq两个基础编程组件,于是我们可以“在一定程度上”使用C#中的yield功能来构造一个迭代器。从表面上看来似乎不错,不过它的实际价值还是有值得推敲的。例如,我们目前还必须使用递归来代替循环,那么我们有办法改变这种变成方式吗?此外,在评论中有朋友谈到,这样写代码其实不是一个格式化就混乱了吗?至少,您是否觉得这种编程方法的function和括号实在多了些呢?这次我们就来探索这些问题的解决办法。 阅读全文

趣味编程:在JavaScript中实现简单的yield功能(1 - yield与yieldSeq)

2010-06-10 01:36 by 老赵, 1050 visits
摘要:上文我谈到了迭代器及其生成器,即C#或Python中的yield功能,它们极大地简化了创建一个迭代器的工作,让代码的语义和可读性有了很大提高。虽然在JavaScript 1.7中已经有了相同的功能,可惜目前我们还无法用到这种强大的能力。那么,我们能不能为JavaScript提供如C#中一样的功能?在文章的评论里许多朋友也给出了他们的解决方案,也让我获得了许多启发。因此,我也打算在以后的文章中总结一下各位的做法。不过在这篇文章里,我先来阐述一下我个人的想法。 阅读全文

趣味编程:在JavaScript中实现简单的yield功能(问题)

2010-06-08 07:33 by 老赵, 3532 visits
摘要:说起迭代器(Iterator)大家一定都不陌生,无论是是Java,C#或是Python等语言都有内置标准的迭代器结构,它们也都提供了内置的for或foreach关键字简化迭代器的“使用”。不过对于迭代器的“生成”,不同语言之间的就会有很大差距。例如,在C#和Python中都提供了yield来简化迭代器的“创建”,此时生成一个迭代器便再简单不过了。但对于Java程序员来说,即使到了Java 7还必须为在迭代器内部手动维护状态,非常痛苦。而更重要的一点是,利用yield我们可以轻松地创建一个“延迟”的,“无限”的序列。那么,我们能否在JavaScript中享受到这样的yield生成器呢? 阅读全文

趣味编程:从字符串中提取信息(参考答案 - 下)

2009-10-21 17:04 by 老赵, 15855 visits
摘要:昨天我们观察了如何使用基于状态机的顺序解析方式来提取字符串中的信息,不过由于winter-cn的做法和我原始的想法不谋而合,但实现的更为清晰,因此我在不献丑的同时,又设法使用另外一种方式来解决这个问题。后来又看到许多朋友给出了各种各样的做法,有普通拆分的方式,有利用正则表达式的做法。于是最后,我“不得不”使用一种特别的方式:F#来编写这么一段解析逻辑。从中我们也可以看到F#在做一些解析工作时的方便之处,在今后我还会谈一下它对我编写C#代码时的启发。 阅读全文

趣味编程:从字符串中提取信息(参考答案 - 上)

2009-10-20 17:13 by 老赵, 18011 visits
摘要:这次“趣味编程”的目的是解析字符串,从一个指定模式的字符串中提取信息。对于目前这个问题,解决方案有很多种,例如直接拆分,使用正则表达式,或是如现在本文这般按照顺序解析。总结果上来说,这些做法都是可取的,不过现在我打算举出的做法是我认为最为“典型”也最有“学习”和“展现”价值的解决方案:基于状态机的顺序字符解析。也欢迎您对此其他的做法进行深入分析。 阅读全文

趣味编程:从字符串中提取信息

2009-10-12 06:20 by 老赵, 18019 visits
摘要:字符串解析是程序员工作中非常重要的一部分,也是非常考验编程能力的工作。基本上我在面试程序员的时候,一定会出一道编程题目作为考察的一方面,而这道题目有很大的可能性是做字符串的解析。例如,给出一个模式规则,要求写程序判断某个字符串是否符合特定格式。例如,要求将BB Code转化为HTML。而现在这个趣味编程题,来自于我目前正在进行的项目。因此从实用角度来说,也有一定现实意义。 阅读全文
1
使用Live Messenger联系我