现在的位置: 首页 > 综合 > 正文

已决定number类型不允许为null, 打算先做一个JavaScript上的实现.

2012年10月30日 ⁄ 综合 ⁄ 共 1122字 ⁄ 字号 评论关闭

number类型是否允许为null, 的确是很头疼的问题.

Parallet的目标是脚本语言. (但它也可预先编译代码)

很多脚本语言的所有类型都允许为null的.

但是为了让number为null, 要付出的代价实在是太大了.

就按我的经验, number需要为null的情况, 非常非常少.

如果某些场合需要允许传递null, 大不了可以定义参数为var便可.

(虽然那样的话允许传递任何类型)

-

现在DotNet的版本依然有很多工作.

考虑到最近实在太忙, 这样进展太慢也不是办法.

-

Parallet要发展起来, 必须需要实在的项目用来支持它.

我是打算实现了DotNet的版本后, 先做一个P2P的项目用来验证, 然后再推出Web框架.

但是这个过程太漫长了.

现在HTML5太流行, JavaScript的不足和进展缓慢让人很遗憾..

就在自己的需求角度来看,  值得先在JavaScript上实现Parallet.

在JavaScript上实现Parallet, 将会对Parallet有以下好处:

1 - 可在主流浏览器上运行, 用于补充JS的不足, 可建立更强的HTML/AJAX应用. 

2 - 可直接在V8引擎上,配合C/C++, 实现任何非HTML应用.

3 - Parallet它自身不需要考虑JIT. 只需要解释执行或编译成JS即可.
    这个特征可以完全兼容不JIT的浏览器/设备, 如果浏览器/设备支持JIT后, Parallet直接得到好处.

4 - 可以用作移动设备的开发. 例如IPHONE.

只要我自己也用Parallet, 让它为我带来好处, 那么即使它进度再慢, 也不会被放弃掉.

-

现在要实现JS版本的Parallet, 唯一的设计难点就是同步函数的问题.

Parallet默认是异步函数. 但是在JS上实现的话, 需要非常紧密地与JS/DOM进行交互.

JS/DOM的函数是同步的. 这样就有兼容性问题. 简单来说, 就是

btn.onclick=MyParalletFunction;

由于MyParalletFunction是异步的,

那么MyParalletFunction里的逻辑, 异步执行时, onclick的event就会失效.

并且也不能给onclick指定返回值.

要解决这个问题, 可能需要强制引入关键字 synchronous:

synchronous function MyParalletFunction(event)
{

  return false;
}

定义了synchronous的函数, 是'显式'的, 是不允许调用任何异步函数的.

它只能调用显式或隐式的synchronous函数.

如果它调用的隐式synchronous函数, 因为修改代码自动变成异步函数,

那么新的代码将产生编译错误, 用来保证程序员明确知道如何处理.

抱歉!评论已关闭.