当前位置:  开发笔记 > 编程语言 > 正文

Swift到JavaScript的转换器 - 可能吗?

如何解决《Swift到JavaScript的转换器-可能吗?》经验,为你挑选了2个好方法。

作为一名在Swift中编写的iOS开发人员,我发现必须将使用Swift编写的相同代码与使用JavaScript编写的前端开发人员进行协调变得越来越烦人.在一个地方实现通用功能然后转换为JS会更加简洁,对吧?

我开始怀疑Swift to JS编译器是否可行?也许不是分享完整的代码,而是至少一些通用的常用功能.

我在网上找到了这个转发器:SwiftJS.可悲的是,这个并没有真正削减它.

以下代码:

let a = [1, 2]
print(a.count)

Invalid Swift code在演示中返回.这并不能增强信心.别担心选项或函数重载等更复杂的位.

我想开始一个转换器项目,但后来我意识到有很多陷阱.例如这段代码:

var a = [1, 2]
var b = a
b.append(3)

应该a等于[1, 2]b等于[1, 2, 3].在JavaScript中,两者[1, 2, 3]都是通过引用传递而不是通过值传递.

是否可以编写一个合适的转换器?



1> Alexander - ..:

任何两种图灵完整语言之间的转换器总是 可行的.这并不意味着它简单,实用或有价值.

至少,您可以保证Swift到JS的转换是可能的,因为您可以将Swift编译为x64机器代码,并使用JS反汇编程序/反编译器来生成JS.但是,生成的代码将非常糟糕JS.

要进行良好的转换,您需要考虑一种语言的所有复杂最佳实践,以及它们在另一种语言中的等价物.这是一项艰巨的任务,必须为你想要传播的任何两对语言做两次(每个方向一次).有一个原因,转发器是如此罕见,通常是垃圾.



2> Marcel Gańcz..:

人们不禁要问,编写Swift到JavaScript的转换器是否有意义,因为语言不会映射1:1.除了你提到的那些(例如inout参数或函数重载)之外,还有许多陷阱.已经有一些可行的替代方案,例如使用Haxe/Kotlin将其转换为JavaScript和Swift,或者使用Xamarin/React Native开发跨平台应用程序.

话虽这么说,两种语言共享许多共同的最佳实践,并且具有相当大的特征重叠(例如,闭包/为变量分配函数).我不认为有任何功能是不可能转移的,虽然一些结果代码可能会非常混乱.

使用例如Kotlin还有一个明显的优势 - 您可以获取现有的Swift项目并将其转换为JS,而无需事先决定在Kotlin中编写.它是您需要学习的一种语言.

我已经开始了一个带有实时预览的转换器项目,我认为这是对ShiftJS的改进.它确实会处理你提到的案例(包括按值传递数组/字典).

尽管如此,它还在进行中,因为我还没有开始实现对类的支持.该inout参数是困扰我的事情之一,尽管可能存在(丑陋的)解决方案.

var a = 2
func incr(_ a: inout Int) {
    a += 1
}
incr(&a)//a now equals 3

可以转化成类似的东西

var a = 2
function incr(a) {
    a.set(a.get() + 1)
}
incr({get: a => a, set: val => a = val})//a now equals 3!

怎么样的黑客!

是否有可能将1:1 Swift写入JS转换器?我倾向于是,但陪审团已经出局了 - 我很可能最终会遇到一个无法在JS中复制的功能.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有