所以这只是我在 IBM Swift 沙箱中的乐趣。我最近在 Scala 中做了一个 L-system algae,虽然在 Swift 中做它来看看语言的比较会很酷。
https://github.com/I2obiN/L-System-Algorithms-and-Fractals/blob/master/algae.scala
那是向你展示我的目标的 Scala,这就是我在 Swift 中所拥有的;
/**
* Created by t.hood on 26/01/16
* L-System Algae
*
*/
import Foundation
// Mapping function for string
func stringmap(x: String) -> String {
var str = x;
// Replace characters in string
str = x.stringByReplacingOccurrencesOfString("A", withString: "AB") +
str.stringByReplacingOccurrencesOfString("B", withString: "A");
// Return mapped string;
return str;
}
func lsys() {
// Declarations
var iteration : Int = 2;
var x = 0;
var lsystem: String = "A";
let charA: Character = "A";
let charB: Character = "B";
while(x != iteration) {
print(lsystem)
// Iterate through characters in string
for chars in lsystem.characters {
lsystem = stringmap(lsystem);
}
// Inc count ..
x+=1
}
}
// Run ..
lsys();
我遇到的问题在于我的映射功能。我需要它来映射 x,打印结果,然后在 str 上执行下一个映射。问题是我在两个地图之间都有运算符 + 并且在第一次操作后我无法快速打印 str 。
有人对如何解决这个问题有任何想法吗?如果我可以在第一次替换后打印 str 我认为它会起作用。