首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Transcrypt和TranscryptFrame

Transcrypt和TranscryptFrame
EN

Stack Overflow用户
提问于 2018-03-05 17:02:12
回答 2查看 81关注 0票数 0

现在,我正在为transcrypt的通用函数编写一个包装器,名为TranscryptFrame。我得到了一个编译器错误,我想知道我们是否能以任何方式解决这个问题,也许这只是对代码的一点改动,以使其正常工作。

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

这是那些甚至不编译的代码,我得到的错误不能分配给函数调用。

代码语言:javascript
复制
# 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:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-05 18:20:47

在队伍中:

代码语言:javascript
复制
tf.S("#demo", "htm") = "The text from the intro paragraph is " + tf.S("#intro", "htm")

您正在为一个函数的结果分配一些东西,即tf.S("#demo", "htm")

这在Python、JavaScript或Transcrypt中是不可能的。在C++中,通过返回引用是可能的,但是C++在这方面是非常独特的。

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

下面的C++代码使用引用和a=左侧的函数调用:

代码语言:javascript
复制
float &lowestGrade (float &x, float & y) {
    return x < y ? x : y;
}

它的名称如下:

代码语言:javascript
复制
grade1 = 4;
grade2 = 6;
lowestGrade  (grade1, grade2) += 2;

请注意,在此之后,grade1将是6。

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

票数 0
EN

Stack Overflow用户

发布于 2018-03-06 13:40:41

好的,所以做这件事的捷径是:

代码语言:javascript
复制
tf.S("#demo").innerHTML = "The text from the intro paragraph is " + \
                           tf.S("#intro", "htm")

如果我想要JQuery这样的东西:

代码语言:javascript
复制
$("#demo").html("The text from the intro paragraph is ")

我需要调用JQuery的实用程序,例如:

代码语言:javascript
复制
__pragma__ ('alias', 'S', '$')
S("#demo").html("The text from the intro paragraph is ")

并在html文档中导入JQuery库。

代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

唯一的办法是

代码语言:javascript
复制
import TranscryptFrame as tf
tf.S("#demo").html("The text from the intro paragraph is ")

将编写一个名为S的类,或者使用一个不同的名称,比如D(表示文档),这样我就可以使用tf.D("#demo").html(*args)来处理它。但是,由于JQuery已经存在,所以在TranscryptFrame中实现类是没有任何意义的,只需要使用语用和现有的JQuery库,比如:

代码语言:javascript
复制
__pragma__ ('alias', 'S', '$')
S("#demo").html("The text from the intro paragraph is ")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49115746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档