标签: iolanguage

Io运算符似乎无法在文件中创建它们

我正在尝试使用Io语言的运算符.在cli中一切正常,但是一旦我将代码放入文件中,我就会遇到问题.

这是一个很小的例子(创建一个与+相同的运算符+++)

OperatorTable addOperator("+++", 3)      # Say that +++ should be an operator
Number +++ := method(v, call target + v) # Define the slot +++ on numbers
(30 +++ 40) println                      # Try it out!
Run Code Online (Sandbox Code Playgroud)

如上所述,这在cli中工作正常,但是当我尝试在文件中运行它时不起作用.我认为它与文件已经预先确定的事实有关,在定义运算符之前,但我将如何解决这个问题呢?

operators iolanguage

5
推荐指数
1
解决办法
348
查看次数

Io语言'应用参数'

在Io编程语言中,是否有与lisp的apply函数等价的东西.

所以例如我有一个包裹writeln的方法:

mymeth := method(
              //do some extra stuff

             writeln(call message arguments))
)
Run Code Online (Sandbox Code Playgroud)

目前这只是打印列表,并没有评估它的内容,就像它们是它自己的args一样.

iolanguage

5
推荐指数
1
解决办法
1271
查看次数

Io:协议'https'不受支持

我试图用Io语言通过HTTPS获取文件:

url := URL with("https://api.example.com")
url fetch println
Run Code Online (Sandbox Code Playgroud)

我得到了这个:

 Error_0x7f97e1509a80:
  location         = "/opt/local/lib/io/addons/Socket/io/URL.io:232"
  message          = "Protocol 'https' unsupported"
Run Code Online (Sandbox Code Playgroud)

我试图在网上找到一些东西,但是,正如大家所知,由于这个名字,这并不容易.我只找到了这个帖子http://tech.groups.yahoo.com/group/iolanguage/message/10898,但那已经很老了.

如何在Io中获得HTTPS支持?

编辑

我发现在Io的源代码中有一个SecureSocket插件,一个OpenSSL封装器.但是,当我sudo port io install使用Mountain Lion在我的MacBook上安装时,它没有安装.我尝试从源代码构建它,但没有运气.它也没有在Linux机器上为我构建.

EDIT2

我只是尝试从source(git clone https://github.com/stevedekorte/io.git)再次构建Io (使用包含的脚本build.sh),结果发现cmake确实检测到了OpenSSL:

 -- Found OpenSSL: /usr/lib/libssl.dylib;/usr/lib/libcrypto.dylib  
Run Code Online (Sandbox Code Playgroud)

但是后来没有构建SecureSocket插件.它的自述文件:https://github.com/stevedekorte/io/tree/master/addons/SecureSocket说:

除非此文件中的修补程序应用于OpenSSL 0.9.8e,否则DTLS1绑定不可用.但是,此修补程序包括在d1_both.c中取消激活重新传输代码,使其不适用于生产环境.我不承担任何责任,等等.如果你想要使用它,应用补丁(从各种新闻组和我自己的实验中收集)并取消注释build.io的注释掉的块.对于它的价值,OpenSSL中的DTLS支持从0.9.8开始是新的,并且开始时是非常错误的.这是一个不错的主意,但它似乎还没有准备好生产.这些绑定也不例外.

ssl binding openssl cmake iolanguage

5
推荐指数
1
解决办法
539
查看次数

如何在Io中反序列化对象?

我在Object上找到了serializedjustSerialized方法,并且已经成功将对象序列化为文件,但我找不到匹配的deserialize方法.

没有,或者我找到它太愚蠢了?

serialization iolanguage

3
推荐指数
1
解决办法
502
查看次数

io Assignment Operator没有评估?

OperatorTable addAssignOperator(":", "myAssignMethod")
"foo" : "bar"
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误,即Sequence不响应":"(":"仍被视为消息,而不是操作符).

我认为它应该被评估myAssignMethod("foo", "bar")(自"foo" = "bar"成为updateSlot("foo", "bar")),但事实并非如此.然而:

OperatorTable addAssignOperator(":", "myAssignMethod")
doString("\"foo\" : \"bar\"")
Run Code Online (Sandbox Code Playgroud)

它可以正常工作,myAssignMethod并被调用.那么如何doString()在文件主代码中工作期间获得代码上发生的任何处理?

iolanguage

3
推荐指数
1
解决办法
166
查看次数

范围如何在Io中起作用?

我不太确定Io中的变量范围是如何工作的.该文件说有倒闭,但我似乎并没有能够看到idx来自内部nextprev方法.父级可见性是关闭的关键前提,那么它们如何工作?

List iterator := method(
    idx := 0

    itr := Object clone
    itr next := method(
        idx = idx + 1
        return self at(idx)
    )

    itr prev := method(
        idx = idx - 1
        return self at(idx)
    ) 

    return itr
)
Run Code Online (Sandbox Code Playgroud)

应该如何实现?

closures scope iolanguage

3
推荐指数
1
解决办法
125
查看次数

在Io语言中,您如何看待"if"的实现?

我使用"getSlot(" 方法名称 ")来探索Core和Object的一些内容,以了解一些基本方法是如何实现的.我很好奇if方法是如何编写和尝试的

Io> Object getSlot("if")
==> Object_if()
Io> Object getSlot("Object_if()")
==> nil
Run Code Online (Sandbox Code Playgroud)

这些都没有提供信息.有没有一种方法,以反映/检查/打印此(和其他Object_ keywordishword()的话)?

reflection iolanguage

3
推荐指数
1
解决办法
261
查看次数

Io语言用户输入

我最近开始搞乱Io编程语言并认为它非常有趣且简单易学.但我也很讨厌文档和支持很少.通常我会来SO寻求帮助,但即使在这里,主题也很少.

我正在学习7周书中的7种语言,我喜欢,但在那里他主要讨论了Io的更深层用途.

我的问题可能非常简单但我无法在任何地方找到答案......您如何实际询问用户输入?我已经找到了传递设置字符串的方法,从文件中读取字符串,但我找不到一种方法来询问用户输入.

我现在正在做的是编写一个接受2个参数的函数:一个字符串和一个要在该字符串中查找的子字符串.该函数在字符串中查找子字符串并打印索引.我甚至不知道我是应该要求用户输入还是以另一种方式做这个...

我正试图在Io上获得一些键盘时间,但这令人沮丧:/

另外,有没有人知道任何对初学者友好的IRC频道?不一定只是Io,但总的来说?

多谢你们.

iolanguage

3
推荐指数
1
解决办法
607
查看次数

Io(语言)启动错误 - .io_history

我在OSX中安装并运行了Io(语言)命令行界面,但现在我在启动时收到此错误:

Exception: while loading history file '/Users/andrew/.io_history', reason: No such file or directory
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何解决它?我已经提出要求的文件(但我不知道该放什么.)谷歌搜索这个错误没有帮助(只需要爱Io的非谷歌能力...... :-))

startup-error iolanguage

1
推荐指数
1
解决办法
154
查看次数

如何传递方法但不能用io语言激活它

我想实现一个方法dim(x,y),它将为矩阵(y rows,x cols)分配空格.

我希望通过将可选函数"填充"传递给它来使"dim(x,y)"更强大,然后'dim'将位于(x,y)的元素设置为填充(x,y)

我的代码如下:

List2D dim := method(x, y, z,
    target := list()
    filler := if(z == nil, 
        method(return nil),
        z)
    for(i, 1, y, 
        subTarget := list()
        for(j, 1, x,
            subTarget append( filler(i,j) ))
            target append(subTarget) )
    return target)
Run Code Online (Sandbox Code Playgroud)

当使用2个参数调用'dim'时,它运行良好,但是失败了

List2D dim(3,2, method(x,y, 10*x+y))

在线上引发了异常filler := if(z == nil .例外说nil does not respond to '*'

我意识到当与nil比较时,'z'被不正常地激活了.

所以我想知道如何让我的'List2D昏暗'正常工作?

iolanguage

1
推荐指数
1
解决办法
239
查看次数

如何在Io中定义xor运算符

我正在完成第七章,即七周语言中七种语言("香肠之王").我直接从书中复制了代码,但它没有用.

Io 20110905
Run Code Online (Sandbox Code Playgroud)

将新运算符添加到OperatorTable.

Io> OperatorTable addOperator("xor", 11)
==> OperatorTable_0x336040:
Operators
  0   ? @ @@
  1   **
  2   % * /
  3   + -
  4   << >>
  5   < <= > >=
  6   != ==
  7   &
  8   ^
  9   |
  10  && and
  11  or xor ||
  12  ..
  13  %= &= *= += -= /= <<= >>= ^= |=
  14  return

Assign Operators
  ::= newSlot
  :=  setSlot
  =   updateSlot

To add a new operator: …
Run Code Online (Sandbox Code Playgroud)

xor iolanguage

1
推荐指数
1
解决办法
197
查看次数