<img src="https://img-blog.csdn.net/20141231234020119?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVvcG8xMjU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
# hello.io
"Hello World!" print
# 实现unless功能
# doMessage相当于一些语言中的eval
unless := method(
(call sender doMessage(call message argAt(0))) ifFalse(call sender doMessage(call message argAt(1))) ifTrue(call sender doMessage(call message argAt(2)))
)
unless(1 == 2, write("One is not two\n"), write("one is two\n"))
#协成
vizzini := Object clone
vizzini talk := method(
"Fezzik, are there rocks ahead?" println
yield
"No more rhymes now, I mean it." println
yield
)
vizzini @@talk; fezzik @@rhyme
Coroutine currentCoroutine pause
# actor并发
# Io的动人之处,发送异步消息给任意对象就是actor
slower := Object clone
faster := Object clone
slower start := method(wait(2); writeln("slowly"))
faster start := method(wait(1); writeln("quickly"))
slower @@start; faster @@start; wait(3)
1.占用空间:占用空间小。大多数Io应用程序的产品都是嵌入式系统。
2.简单:语法简洁,容易学习。
3.灵活:Io的鸭子类型和自由度,能让你在任何时间改变任何对象的任何槽。
4.并发:提供了actor、future和协程使得Io编写多线程应用程序要容易的多。
不足:
1.语法:几乎没有什么语法糖。编码量大时,容易使得代码不易读。
2.社区:社区规模非常小。
3.性能:对于单线程服务的程序来说,Io有不少能拖慢其执行速度的特性。