は、私がblock()
Kotlin、高次機能のトラブル
fun getSphereOrbitPos(modelMatrix: MatrixStack, orbitCenter: Vec3, orbitAxis: Vec3, orbitRadius: Float, orbitAlpha: Float): Vec3 {
modelMatrix run {
translate(orbitCenter)
rotate(orbitAxis, 360.0f * orbitAlpha)
var offsetDir = orbitAxis cross Vec3(0.0f, 1.0f, 0.0f)
if (offsetDir.length() < 0.001f)
offsetDir = orbitAxis cross Vec3(1.0f, 0.0f, 0.0f)
offsetDir.normalize_()
translate(offsetDir * orbitRadius)
// this is what I'd like to return, top() = MatrixStack.top()
return (top() * Vec4(0.0f, 0.0f, 0.0f, 1.0f)).toVec3()
}
} // return error
で計算された中間結果を返すようにしようとしているメソッドを持っています外部変数を宣言した場合
fun getSphereOrbitPos(..): Vec3 {
var result = Vec3()
modelMatrix run {
..
result = (top() * Vec4(0.0f, 0.0f, 0.0f, 1.0f)).toVec3() // error
}
私は次のエラーを取得する:
Expected a value of type Any
は私がMatrixStack.run{ }
を使って、欲しいものを得ることができます方法はありますか?あなたはrun { }
内return
を使用して、この中置関数がインライン展開されている場合は
にあなたの機能を変更することができますに私はあなたのラムダの最後の行の後に 'Unit'を追加することによって、それを修正することができると思います。 'result = ... 'の代入が' Any'型ではないので不平を言います。 – marstran