Transcrypt和TranscryptFrame

时间:2018-03-05 17:02:12

标签: transcrypt

现在我正在研究一个名为TranscryptFrame的transcrypt常用函数的包装器。我遇到编译器错误,我想知道我们是否可以以任何方式解决这个问题,也许只是代码中的一些变化才能让事情发生。

您需要在工作目录中包含最新的TranscryptFrame.py文件以进行编译。您可以在此处找到它:https://github.com/bunkahle/Transcrypt-Examples/blob/master/dom/TranscryptFrame.py - 请随时建议对此文件或错误报告进行更改或改进。它可能会在某个时候作为图书馆使用。

所以这里的代码甚至没有编译,我得到的错误不能分配给函数调用。

# change_text2a_tf.py
import TranscryptFrame as tf

def insert():
    # working:
    # myElement = tf.S("#intro")
    # tf.S("#demo").innerHTML = "The text from the intro paragraph is " + myElement.innerHTML

    # working:
    # myElement_htm = tf.S("#intro", "htm")
    # tf.S("#demo").innerHTML = "The text from the intro paragraph is " + myElement_htm

    # working:
    # tf.S("#demo").innerHTML = "The text from the intro paragraph is " + tf.S("#intro", "htm")

    # not working: can't assign to function call on compiling
    tf.S("#demo", "htm") = "The text from the intro paragraph is " + tf.S("#intro", "htm")

这是运行它的html:

<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="__javascript__/change_text2a_tf.js"></script>
    <title>Change Text with TranscryptFrame</title>
  </head>
  <body onload=change_text2a_tf.insert()>
    <p id="intro"><b>Hello World!</b></p>
    <p>This example demonstrates the <b>getElementById</b> method!</p>
    <p id="demo"></p>
  </body>
</html>

2 个答案:

答案 0 :(得分:0)

在行中:

d['FB'], d['AAPL']

您正在为函数的结果分配一些内容,即tf.S("#demo", "htm") = "The text from the intro paragraph is " + tf.S("#intro", "htm")

这在Python,JavaScript或Transcrypt中是不可能的。在C ++中可以通过返回引用来实现,但C ++在其中是相当独特的。

Python,JavaScript或Transcrypt中的函数不返回LValue(内存中的位置),而是返回RValue(驻留在该位置的值)。 您不能将任何内容存储在值中,只能存储在某个位置。

以下C ++代码使用了对=:

左侧的引用和函数调用
tf.S("#demo", "htm")

可以如下调用:

float &lowestGrade (float &x, float & y) {
    return x < y ? x : y;
}

请注意,此后grade1 = 4; grade2 = 6; lowestGrade (grade1, grade2) += 2; 将为6。

但如上所述,返回LValues(内存中的位置)的函数对于C ++来说是相当独特的。

答案 1 :(得分:0)

好的,所以最简单的方法是:

tf.S("#demo").innerHTML = "The text from the intro paragraph is " + \
                           tf.S("#intro", "htm")

如果我想要JQuery之类的东西:

$("#demo").html("The text from the intro paragraph is ")

我需要为JQuery调用pragma,如:

__pragma__ ('alias', 'S', '$')
S("#demo").html("The text from the intro paragraph is ")

并使用

导入html文档中的JQuery库
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

拥有类似

之类的唯一方法
import TranscryptFrame as tf
tf.S("#demo").html("The text from the intro paragraph is ")

将编写一个名为S的类或具有不同名称的类,如D(对于文档),以便我可以使用tf.D(“#demo”)。html(* args)来处理它。但是既然JQuery已经存在,那么在TranscryptFrame中实现一个类并没有任何意义,只需使用pragma和现有的JQuery库,如:

__pragma__ ('alias', 'S', '$')
S("#demo").html("The text from the intro paragraph is ")