mobl-lang 的反应性编程
mobl-lang是一门针对移动应用开发的语言,接下来介绍该语言的反应性编程特性,下面是一段简单的代码,看看是什么意思?
screen root() {var amount = 20var percentage = 10header("Tip calculator")group {item { numField(amount, label="amount") }item { numField(percentage, label="percentage") }item { "$" label(amount * (1 + percentage/100)) }}
}
该代码用户通过调节前两个numField中的值,会实时改变label的显示值。
先看第一段代码
screen root() { ... }
这句代码意思是一个没有参数的名叫root的屏幕,屏幕可以有0或者更多的参数。
var amount = 20
var percentage = 10
这段代码定义了屏幕的两个变量,这些变量只能由该屏幕访问,虽然mobl-lang是类型语言,有时也不需要准确指明,因为类型可以被推测出来,实际上,上述的代码可以变成
var amount : Num = 20
var percentage : Num = 10
var表示变量variable,变量的值可以由两种方式改变,直接被赋予新值,或者被绑定到控件上。
header("Tip calculator")
这一行实例化header控件,该控件来自mobl::ui::generic
包。控件可以有两类参数,普通参数和body元素。普通参数通过括号里面的内容传给控件,header控件的第一个参数叫做“text”,因此上述代码可以写作
header(text="Tip calculator")
第二类body元素见下一行代码,这是一句对group控件的实例化,group没有被传进任何普通参数,但他有三个item元素。
group {item { ... }item { ... }item { ... }
}
item元素也是一个控件,拥有一个numField控件元素,item只能在group控件中,不能单独存在。numField是一个输入控件,有两个普通参数,包括amount变量和label控件。将变量传给numField控件,就是将amount与numField进行绑定,任意一边的变化都会引起另一边的变化,下一句代码类似。对控件值的操作会引起变量的变化,变量的变化也有可能引起其他绑定该变量的控件。
item { numField(amount, label="amount") }
item { numField(percentage, label="percentage") }
最后一行代码,item包含两个控件,第一个是“$”,第二个是label控件,label被传进一个表达式作为变量,同样该表达式也与label绑定在一起,表达式值的变化引起label屏幕显示值的变化,不过这是一个单向绑定。
item { "$" label(amount * (1 + percentage/100)) }
mobl-lang 的反应性编程相关推荐
- mobl:针对移动Web开发的DSL
简介 现在,针对移动设备像智能手机和平板电脑的应用开发很流行.Apple公司的AppStore(针对iPhone.iPod和iPad)拥有超过350,000种应用,而Android的marketpla ...
- mobl:针对移动Web开发的“.NET研究”DSL
简介 现在,针对移动设备像智能手机和平板电脑的应用开发很流行.Apple公司的AppStore(针对iPhone.iPod和iPad)拥有超过350,000种应用,而Android的marketpla ...
- mobl 针对移动Web开发的DSL(2)
mobl 是一个新的开源的编程语言,主要用于加速手机应用的开发,mobl 可方便构建手机 web 应用程序,包括 iOS.Android 和其他支持 HTML5 技术的手机.一起来看本文. AD: 简 ...
- mobl:针对移动Web开发的DSL【很详细】
http://kb.cnblogs.com/page/100177/ 作者: Zef Hemel 来源: InfoQ 发布时间: 2011-05-10 13:21 阅读: 273 次 原文链接 ...
- 什么是(功能)反应式编程?
我已经读过关于反应式编程的维基百科文章. 我还阅读了关于功能反应式编程的小文章. 描述非常抽象. 功能反应式编程(FRP)在实践中意味着什么? 反应式编程(与非反应式编程相反?)由什么组成? 我的背景 ...
- P4编程环境安装(ubuntu16.04,p4c+bmv2+mininet+PI+tutorial)
安装过程 我的安装过程大多参考(copy)P4编程环境搭建+实现tutorials中basic的案例,并对某些安装出现的问题进行简要说明. 我使用的版本环境如下: Ubuntu 16.04 Deskt ...
- c++常用源代码以及常用库查找
我平时看代码主要是C和C++代码为主,Java代码也会偶尔看一下.平时除了自己积累一些代码之外,也会主动去寻找一些代码,比如说, (1)到sourceforge上查找相关代码: (2)到google ...
- ExecutorService - 10个技巧和窍门
ExecutorService已经成为Java并发编程中常用的基础库,几乎所有到线程 任务等执行都要委托ExecutorService.下面是使用过程中10个技巧和窍门. 1.为线程池和线程取名 当我 ...
- 常用C/C++开源库
1. 框架 Apache C++ Standard Library : 是一系列算法,容器,迭代器和其他基本组件的集合 ASL : Adobe源代码库提供了同行的评审和可移植的C++源代码库. Boo ...
最新文章
- 如何反转“轨道生成”?
- python解释器运行代码-Python如何运行程序
- secFox setting
- .net序列化与反序列化通用方法
- Collections集合工具类的方法_sort(List)
- predicate 列存储索引扫描_ColumnStore index (列存储索引)解析
- Windows下运行jekyll,编码已不再是问题
- java 累进计费率计算_设计费400万,缴纳所得税100万,如何筹划
- css转化成stylus,stylus
- 解析几何复习(一)向量代数
- python输出变量地址_Python——变量
- 1061. Dating (20)-PAT甲级真题
- np.roll的作用
- C# 编译或者解释?
- WinRAR 4.01 简体中文版 [0530]
- 什么是ipo表,ipo图,hipo图
- 斐讯K2P路由器设置AP模式(大部分路由器通用
- Android车载导航的一些困境
- php处理微信weui图片上传
- 【工具篇】Unity使用Spine2D动画,代码控制