我想切换到strings.xml以允许多种语言。 我知道如何从strings.xml加载字符串数组,对于简单的数组来说这不是问题,但是我的大多数数组都不简单!整个想法是将它们蜘蛛化。
fun pick( list :Array<String>):String{
return list.random()
}
fun colour():String {
val list = arrayOf("blue","red","green",size()+"")
return pick(list)
}
fun size():String {
val list = arrayOf("big","small","medium")
return pick(list)
}
上面是一个简单的例子 size函数可以从strings.xml正常工作,但是单击颜色函数时,不能动态选择颜色函数作为数组的一部分
全部通过pick()的原因是允许我向字符串添加修饰符(更改颜色,计算函数被调用的次数等)
我实际代码中的某些数组(目前为c#)具有10或20个动态条目
那么我们如何为此使用strings.xml?有没有一种方法可以添加关键字,然后可以在pick()中更改...。尽管如此,pick本质上是在调用自身?
我已经坚持了好几天,也许我错过了明显的东西?
编辑
尝试使用关键字,但会导致堆栈溢出,示例代码:
fun keyword(input:String):String{
val result = input.replace(
"#colour", colour()
).replace(
"#size", size()
)
return result
}
fun pick( list :Array<String>):String{
val tempResult = list.random()
val result= keyword(tempResult)
return result
}
fun colour():String {
val list = arrayOf("blue","red","green","#size blue")
return pick(list)
}
fun size():String {
val list = arrayOf("big","small","medium")
return pick(list)
}
fun example():String{
val list = arrayOf("#size #colour whale")
return pick(list)
}
这被称为 val结果= example() (从本质上讲,调用是异步完成的,因此,如果数组变大,它们将不会挂断程序,无需使用关键字进行测试即可正常工作)
错误是:
2019-04-17 22:48:41.433 9010-9665 / com.mrgreaper2004.dmslittlehelper W / System.err:java.lang.StackOverflowError:堆栈大小1041KB 2019-04-17 22:48:41.436 9010-9665 / com.mrgreaper2004.dmslittlehelper W / System.err:在java.util.Random.next(Random.java:202)2019-04-17 22:48:41.436 9010-9665 / com.mrgreaper2004.dmslittlehelper W / System.err: 在java.util.Random.nextInt(Random.java:390)2019-04-17 22:48:41.436 9010-9665 / com.mrgreaper2004.dmslittlehelper W / System.err:在 kotlin.random.AbstractPlatformRandom.nextInt(PlatformRandom.kt:45) 2019-04-17 22:48:41.436 9010-9665 / com.mrgreaper2004.dmslittlehelper W / System.err:位于 kotlin.random.Random $ Default.nextInt(Random.kt:246)2019-04-17 22:48:41.436 9010-9665 / com.mrgreaper2004.dmslittlehelper W / System.err: 在kotlin.collections.ArraysKt ___ ArraysKt.random(_Arrays.kt:2212) 2019-04-17 22:48:41.437 9010-9665 / com.mrgreaper2004.dmslittlehelper W / System.err:位于 com.mrgreaper2004.dmslittlehelper.GeneratorFragment.pick(GeneratorFragment.kt:129) 2019-04-17 22:48:41.437 9010-9665 / com.mrgreaper2004.dmslittlehelper W / System.err:位于 com.mrgreaper2004.dmslittlehelper.GeneratorFragment.colour(GeneratorFragment.kt:136)2019-04-17 22:48:41.437 9010-9665 / com.mrgreaper2004.dmslittlehelper W / System.err:位于 com.mrgreaper2004.dmslittlehelper.GeneratorFragment.keyword(GeneratorFragment.kt:121)
最后一部分错误重复
答案 0 :(得分:0)
好吧,我很怀疑!
fun pick( list :Array<String>):String{
val tempResult = list.random()
//val result= keyword(tempResult)
return tempResult
}
fun colour():String {
val list = arrayOf("blue","red","green","#size blue")
val tresult=pick(list)
val result = tresult.replace("#size",size())
return result
}
fun size():String {
val list = arrayOf("big","small","medium")
val result=pick(list)
return result
}
fun example():String{
val list = arrayOf("#size #colour whale")
val tresult=pick(list)
val result = tresult.replace("#size",size()).replace("#colour",colour())
return result
}
因为不是每个生成器都会使用每个生成器,所以我可以选择特定的生成器...答案突然出现在我眼前,因为我经常在数组中使用字符串来替换同一功能的多个调用。一个数组有多个不同的项目,每个项目都有一种颜色的机会,但是只能选择一个项目。我选择了一种将其分配给字符串的随机颜色,然后在需要颜色的每个项目中对其进行引用...无意义地随机选择多个颜色如果只用一个(可能不好解释)