一言不合就自己写了个编程语言
点击图片报名参加广州&珠海源创会
序言
摘要: 最近一直在写一个脚本语言,主要对标对象是润乾的集算器、Python等。感觉润乾的集算器有一定的应用场景,但是类似excel的方式严重影响编程可接受程度,另外其有些语法感觉与java习惯也非常不一致,因此就自己动手写了一个,目前正在紧张的验证中,验证完毕将完全开源。 欢迎感兴趣的同学mark,到时一起玩耍。 最终开源的git地址是:http://git.oschina.net/tinyframework/tinyscript 正常是完善好文档再开源,如果fork超过1000+,马上开源,开源协议是Apache V2。
运行
我们提供了Eclipse和Idea插件,可以直接右键运行扩展名为tinyscript的文件哦
示例
99表
运行结果
我们支持简化的println,其实你用java的写法也是可以的,比如:System.out.println。
数组
运行结果
列表
运行结果
当然也可以有更好玩的动作
当然,来点lambda也是可以的:
运行结果:
Java语法可以直接使用
运行结果:
当然脚本语言中的结果也可以在Java里面完美使用,完全没有违和感。
java的所有属性和方法都可以直接被调用:
运行结果:
这里也再次证明它和java都是完全一致的,从这个意义上说,他可以是ava的扩展。
当然,做它不是为了玩玩,当然是期望有比较简单的处理,这里的“#”表示集合元素的一个具体元素
运行结果:
上面的意思就是,对这个列表进行过滤,分别是取奇数、偶数和大于3的偶数。
由于后面的表达式可以任意编写,这样就有了非常好的适用场景了:
运行结果:
上面的逻辑是,取出年龄大于3且年龄是单数的用户列表。
Map
运行结果:
全排列
运行结果
当然你也可以对各种排列进行相关的处理
水仙花数
运行结果:
可以看到普通的算法是上面这个样子的。
采用全排列的算法是如下的:
运行结果:
可以看到比普通的算法多了两个0,1,原因是这里没有对000和001进行处理,直接转为0和1了,如果000=0、001=1,那么0、1也可以算作是符合条件的。
石头剪刀布游戏
运行结果:
看起来玩起普通的算法也是没有任何问题的。
类支持
运行结果:
计算连续3天涨停的股票
下面是某证券交易所一个月内的日收盘价记录,其中CODE列为股票代码,DT为日期,CL为收盘价。试找出这个月内曾连续三天涨停的股票。为避免四舍五入产生的误差,涨停的比率定为9.5%。
部分数据请见下图(完整记录请见附件stockRecords.txt,之后示例也遵守此规范)
这次的代码有点复杂,因此这里解释一下:
设定涨停增长率为0.095及以上。
从文本文件读取数据,当然从数据库读取也是一样的,只要改成如下即可:
然后增加一个列,并把CL列转成double,然后按CODE分组,然后按DT排序。
然后每支股票的第一天的增长率设置为0,然后,计算后面的增长率。
然后过滤连续3天增长率都大于涨停的股票。
运行结果:
计算订单邮费
某B2C网站需要计算订单的邮寄费用,大部分情况下,邮费有包裹的总重量决定,但是,当订单的价格超过300美元时,提供免费付运。详细规则如下面的mailCharge表所示:
该表记录了各个字段在各种取值范围内时的邮费。例如,第一条记录表示,cost字段取值在300与1000000之间的时候,邮费为0(免费付运);第二条记录表示,weight字段取值在0到1(kg)之间时,邮费为10(美元)。
某B2C网站需要计算订单的邮寄费用,大部分情况下,邮费有包裹的总重量决定,但是,当订单的价格超过300美元时,提供免费付运。详细规则如下面的mailCharge表所示:
该表记录了各个字段在各种取值范围内时的邮费。例如,第一条记录表示,cost字段取值在300与1000000之间的时候,邮费为0(免费付运);第二条记录表示,weight字段取值在0到1(kg)之间时,邮费为10(美元)。
下面是该网站的一些订单:
请计算这些订单的详细邮费。
运行结果:
统计销售大户
下面是某企业的历史销售合同记录:
下面是某企业的客户信息表:
某年内按销售额排名的客户,达到一半销售额的前n个客户称为该年的“大客户”,请列出1998年该企业的大客户名单。
运行结果:
统计客户账户余额
一共涉及四张表,首先是Customers表,记录了客户ID和客户的账户余额:
第二张表是Orders表记录了每个订单以及它的客户:
第三张表OrderDetails表记录了每个订单的详细信息,包括订购的产品ID以及数量:
最后一张表Products表记录了企业所有的产品信息:
问题是为每一个订购了公司所有产品的顾客求出平均acct_balance(账户余额),并为每一个没有订购所有产品的顾客求出平均账户余额。
运行结果:
Spring 思维导图,让 Spring 不再难懂(mvc篇)