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 的反应性编程相关推荐

  1. mobl:针对移动Web开发的DSL

    简介 现在,针对移动设备像智能手机和平板电脑的应用开发很流行.Apple公司的AppStore(针对iPhone.iPod和iPad)拥有超过350,000种应用,而Android的marketpla ...

  2. mobl:针对移动Web开发的“.NET研究”DSL

    简介 现在,针对移动设备像智能手机和平板电脑的应用开发很流行.Apple公司的AppStore(针对iPhone.iPod和iPad)拥有超过350,000种应用,而Android的marketpla ...

  3. mobl 针对移动Web开发的DSL(2)

    mobl 是一个新的开源的编程语言,主要用于加速手机应用的开发,mobl 可方便构建手机 web 应用程序,包括 iOS.Android 和其他支持 HTML5 技术的手机.一起来看本文. AD: 简 ...

  4. mobl:针对移动Web开发的DSL【很详细】

    http://kb.cnblogs.com/page/100177/ 作者: Zef Hemel  来源: InfoQ  发布时间: 2011-05-10 13:21  阅读: 273 次  原文链接 ...

  5. 什么是(功能)反应式编程?

    我已经读过关于反应式编程的维基百科文章. 我还阅读了关于功能反应式编程的小文章. 描述非常抽象. 功能反应式编程(FRP)在实践中意味着什么? 反应式编程(与非反应式编程相反?)由什么组成? 我的背景 ...

  6. P4编程环境安装(ubuntu16.04,p4c+bmv2+mininet+PI+tutorial)

    安装过程 我的安装过程大多参考(copy)P4编程环境搭建+实现tutorials中basic的案例,并对某些安装出现的问题进行简要说明. 我使用的版本环境如下: Ubuntu 16.04 Deskt ...

  7. c++常用源代码以及常用库查找

    我平时看代码主要是C和C++代码为主,Java代码也会偶尔看一下.平时除了自己积累一些代码之外,也会主动去寻找一些代码,比如说, (1)到sourceforge上查找相关代码: (2)到google  ...

  8. ExecutorService - 10个技巧和窍门

    ExecutorService已经成为Java并发编程中常用的基础库,几乎所有到线程 任务等执行都要委托ExecutorService.下面是使用过程中10个技巧和窍门. 1.为线程池和线程取名 当我 ...

  9. 常用C/C++开源库

    1. 框架 Apache C++ Standard Library : 是一系列算法,容器,迭代器和其他基本组件的集合 ASL : Adobe源代码库提供了同行的评审和可移植的C++源代码库. Boo ...

最新文章

  1. 如何反转“轨道生成”?
  2. python解释器运行代码-Python如何运行程序
  3. secFox setting
  4. .net序列化与反序列化通用方法
  5. Collections集合工具类的方法_sort(List)
  6. predicate 列存储索引扫描_ColumnStore index (列存储索引)解析
  7. Windows下运行jekyll,编码已不再是问题
  8. java 累进计费率计算_设计费400万,缴纳所得税100万,如何筹划
  9. css转化成stylus,stylus
  10. 解析几何复习(一)向量代数
  11. python输出变量地址_Python——变量
  12. 1061. Dating (20)-PAT甲级真题
  13. np.roll的作用
  14. C# 编译或者解释?
  15. WinRAR 4.01 简体中文版 [0530]
  16. 什么是ipo表,ipo图,hipo图
  17. 斐讯K2P路由器设置AP模式(大部分路由器通用
  18. Android车载导航的一些困境
  19. php处理微信weui图片上传
  20. 【工具篇】Unity使用Spine2D动画,代码控制

热门文章

  1. RW、RO、ZI段的含义
  2. 异常行为检测算法_检测异常行为的异常或异常类型算法
  3. 王者荣耀服务器维护1月9号,王者荣耀体验服
  4. 2017计算机考研统考大纲,2017计算机考研大纲解析
  5. 系统中出现许多wmiprvse.exe进程的处理方法
  6. Centos8安装显卡驱动以及Cuda
  7. 隐私保护学习笔记(privacy protection reading list)
  8. 大家都来学 Java(一)快乐入门
  9. 报!!第十二届蓝桥杯大赛报名启动!!
  10. 非controller层调用service2种