02 2010 档案
摘要:匿名函数自动调用的三种写法如下: 再来看一段代码:Person类为所有传入的对象属性,自动生成了getXXX与setXXX方法,这一段代码虽然很短,却包含了诸多js中的关键概念:1.json对象表示法当我们把"{name:"菩提树下的杨过",sex:"男"}"做为参数,传入Person构造函数时,实际上就建立了一个字典结构的键值对:name --> "菩提树下的杨过"sex --> "...
阅读全文
摘要:一度以为在javascript的世界里,所有方法都是公有的,无法真正从技术上定义一个私有方法,今天又一次发现:其实我错了!说明:类的构造函数里定义的function,即为私有方法;而在构造函数里用var声明的变量,也相当于是私有变量。(不过类比于c#这类强类型语言中的私有成员概念还是有区别的,比如无法在非构造函数以外的其它方法中调用)类似的,我们还能实现类似set,get属性的封装注:js中的"变...
阅读全文
摘要:啥也不说,先看代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> ...
阅读全文
摘要:1.方法重载js中并不直接支持类似c#的方法重载,所以只能变相的来解决,示意代码:(利用了内置属性arguments)2.参数个数检测js引擎同样也不会在function调用时,强制检查参数个数,所以只能自己处理,示例代码:3.参数基本类型检测js引擎同样更不会检测参数的类型,如果您希望对参数的基本类型做些限制,可以利用typeof 来判断基本类型4.自定义类的参数类型检测第3条所提到的方法,只能...
阅读全文
摘要:曾经发过一篇如何在Silveright中利用XmlSerializer序列化对象的文章“Silverlight中的序列化”,限于当时的认识有限,一度以为silverlight只有这一种办法,今天意外发现,其实还有更好的方式,特此做一个汇总与比较1.json序列化方式silverlight支持json字符串已是众人皆知的事情,没啥好说的,有点容易让人误导的是:我们在vs的si...
阅读全文
摘要:共同点:都是用来屏幕输出的。不同点:puts 输出内容后,会自动换行(如果内容参数为空,则仅输出一个换行符号);另外如果内容参数中有转义符,输出时将先处理转义再输出p 基本与puts相同,但不会处理参数中的转义符号print 基本与puts相同,但输出内容后,不会自动在结尾加上换行符s = "aaaa\nbb\tbb"p sp "****************"puts sp "********...
阅读全文
摘要:先来看别名,ruby中可以给方法或全局变量起一个别名,有意思的是:方法别名定义后,即使对应的方法在后面的代码中重新定义(即修改内部实现)后,别名仍然可以调用到修改前的方法,而全局变量则不行。def meth puts "This is meth"endalias:orgin_meth:methmeth #=> This is methorgin_meth #=>This is met...
阅读全文
摘要:#静态方法的4种写法class Test def Test.StaticMethod1 puts "Test.StaticMethod1" end def self.StaticMethod2 puts "Test.StaticMethod2" end class << Test def StaticMethod3 puts "Test.StaticMethod3" end e...
阅读全文
摘要:主要代码修改自园子里"smjack"的【原】改进了的"利用Silverlight实现类似iGoogle的浮动拖拽效果",修改说明:1.将原来的列宽度等分,改为允许非等分2.增加了最大化,最小化,关闭功能3.模块太多,导致Silverlight显示不下时,自动加上垂直滚动条本想将模块设置功能抽时间完成一下,但近期又迷上ROR了,不知道什么时候才会完成这个东东(也许永远不会完成),先把这几处修改完成的...
阅读全文
摘要:用ROR框架做开发,基本上只要SciTE+资源管理器+命令行 就可以了,但如果您确实一时很难忘记IDE环境,而且机器配置又不咋地,建议您重返三剑客时代,找找当年DreamWeaver的感觉 :)http://rubyweaver.gilluminate.com/到这上面下载rhtml for dreamweaver的插件安装后,dreamweaver就能认别rhtml格式了,您可以象编辑html一...
阅读全文
摘要:这是网上收集的几篇教程1. Sqlite简明教程http://www.sqlite.com.cn/MySqlite/4/32.Html2. Sqlite入门教程http://www.sqlite.com.cn/MySqlite/4/33.Html3. Sqlite官方http://www.sqlite.org/4. 推荐pysqlite使用指南http://gashero.yeax.com/?p=...
阅读全文
摘要:ror对于初学者来讲,可能最大的困难莫过于开发环境的安装与搭建,今天折腾了大半天基本搞定了,把过程贴在这里,以便初学者少走弯路。1.安装ruby 1.8.6 打开 http://rubyforge.org/frs/?group_id=167,安装 ruby1.8.6-26最终版本下载完成后,可在命令行下键入 ruby -v验证版本 (如果在命令行里输入ruby提示找到不该命令,请将c:\ruby\...
阅读全文
摘要:小时候对日本的动画片十分着迷,“圣斗士”是我的最爱;长大后也曾经一度对“海贼王”十分痴迷;大学看武侠小说时,也特别喜欢那种主人公有奇遇的情况:吃到一颗千年异果,然后功夫大增60年...这些个场景都有一个共同点:对象(或系统)会因为一些需求(通常这些需求之间没有任何关联),而扩展自己的功能。具体来说:青铜战士如果有幸能穿上黄金圣衣,不管你是不是黄金圣斗士,在穿上黄金圣衣的那一刻,你就具有黄金圣斗士的能力;海赋王中的人物,如果能吃到一颗奇异果,就能获得特别的能力(比如路飞就是吃了橡胶奇异果);武侠小说中,主角如果不经意间吃下了千年人参,从此功力大增,打遍天下无敌手...ok,下面谈谈如何设计,就拿
阅读全文
摘要:场景:如果想模拟windows的开始菜单,分析一下会发现里面的菜单项:有些有子菜单,有些则没有;因此大体可以将菜单类分为二类,设计代码如下:客户端示例调用如下:从功能正确性上讲,上面的示意代码并无大错,但是如果从客户程序上考虑,却发现这样并非最佳实践:客户程序依赖了太多的Menu类细节,客户程序在树型菜单创建完成后,最关心的莫过于如何把菜单完整的显示出来,但上面的代码中为了达到这个目的,却不得不知道子菜单的内部实现(通过Children和类型判断),如果以后菜单类升级,修改了内部构造(比如将Children改成GetChildren),客户程序将被迫重新修改,这时候组合(Composite)模
阅读全文
摘要:闭包的一个重要特征是:过程(方法)内部定义的变量,即使在方法调用完成以后,仍然可以继续引用到!(即延长了生命周期)def method(n) puts "n=#{n}"; #测试用 return proc{|i| n +=i } #关键:proc是一个过程对象,只能由"委托"用call来调用,这里在过程内部引用了参数变量n,将会在多次call该过程后,保留对n的引用,形成闭包!endaDeleg...
阅读全文
摘要:ruby的数组基本使用,跟c#中的数组比起来,最不习惯的区别在于允许负索引(跟javascript到有几分相似)arr=[3,4,5,6,7,8,9]puts arr[0] # 3puts arr.first # 3puts arr[arr.length-1] # 9puts arr[arr.size-1] # 9puts arr.last #9puts arr[-1] #9,下标为-1,即...
阅读全文
摘要:ruby中的module与.net中的namespace有点类似,可以用来区分同名但属于不同开发者(或组织)的代码。下面的代码,定义了一个Me模块,里面的sqrt与Math模块中的sqrt重名,另外还有一个重名常量PI#定义一个模块(有点类似.net中的命名空间)module Me def sqrt(num1,num2=-1) return "num1=#{num1},num2=#{num2}"...
阅读全文
摘要:动态语言之所以“动态”,最明显的特征就是:类实例的行为/属性可以在new出后,动态修改!个人觉得这种处理相对java/c#(静态语言)来说,更符合现实世界。比如:一个人刚出生时,除了哭、吃奶等这些基本原始本能,其它的几乎全都不会(原始本能可理解类定义中最开始定义的属性和方法),但随着时间推移,学会了看书,走路,说话...(相当于新增了方法/属性),再往后的人生谁也无法预料,...
阅读全文
摘要:看了几天ruby,发现c#中很多一直被称道的语法特性,ruby早在几年前就有了:1.c#中的params关键字 class Program { static void Main(string[] args) { Console.WriteLine(Sum()); Console.WriteLine(Sum(3,6)); Console.Read(); } static int Sum(params...
阅读全文
摘要:ruby语言跟c#的一些重要差别在于:1.ruby是动态语言,c#是静态语言--即对象在new出来以后,ruby还可以动态给对象实例添加一些属性或方法(javascript也是如此)2.ruby中刻意弱化了变量类型这个概念,默认情况下变量/方法都不需要声明具体(返回)类型,但其实在ruby内部,会自动根据变量的值分配类型。(可以通过 “puts 变量.class“查看)3....
阅读全文
摘要:虽然ruby/ruby on rails从2007年就一直获奖无数,但身为一个中国人,一直对小日本创造的东西不怎么感兴趣,想想其实也没必要,技术本身是无国界的,日本其实也有值得学习的地方(扯远了,呵)单从技术而言,ruby本身确实很爽,令程序员的工作变得轻松有趣!下面的代码演示了如何找出100以内的素数:using System;namespace Mersenne{ class Program ...
阅读全文
摘要:场景:sql2005数据库,假如名为db1,启用了Service Broker,把db1备份,然后再恢复成db2(即相当于db2就是db1的一次完整镜像备份),然后用use masterALTER DATABASE db2 set ENABLE_BROKER 想启用Broker时,出现以下错误:无法启用数据库 "db2" 中的 Service Broker,因为已存在启用的具有相同 ID 的 Se...
阅读全文
摘要:当一个应用,有着多个维度的变化时,桥模式可将多个维度的变化独立开来(即解耦),最直观的好处就是可有效减少子类的数量。场景:假如我们要开发一个数据程序程序,导出的数据格式暂定为txt,xml,或直接导入到其它数据库(注:导出格式的需要变化,可以理解为功能维度上的变化),而且我们还要让这套程序能运行于多种平台(windows,linux,freebsd,macos...)上,即跨平台运行(注:可支持多平台的需要变化,可理解为平台需求维度上的变化)如果按传统思维:每种格式的导出程序都要对应写出N个版本的实现,如果导出格式数为M,可支持的平台数为N,则最终的子类数目一定在M*N之上,这将导致一个类爆炸
阅读全文