You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何在函数调用时将参数x1的值赋给参数x2

问题原因

Kotlin 不支持在同一次函数调用的参数列表中,直接引用前面传入的命名参数值。代码B里写x2 = x1时,当前作用域不存在名为x1的独立变量,编译器会直接抛出未解析引用的错误。
另外代码B还存在运算优先级的隐藏问题:step * index.toX会优先执行index.toX再做乘法,和代码A中先算step * index再调用.toX的逻辑完全不一致,就算解决了参数引用问题,最终绘制效果也会不符合预期。

修复方案

最推荐的写法是把公共计算结果提取为局部变量,既解决参数复用问题,也能保证运算顺序正确,代码可读性和可维护性更好:

val drawX = (step * index).toX
it.drawChildnAxis(
    x1 = drawX, y1 = 0f.toY,
    x2 = drawX, y2 = yAxisLength.toY
)

如果不想额外定义局部变量,也可以直接把相同的计算表达式分别传给x1和x2,注意必须给乘法运算加括号保证优先级正确:

it.drawChildnAxis(
    x1 = (step * index).toX, y1 = 0f.toY,
    x2 = (step * index).toX, y2 = yAxisLength.toY
)

这种写法不建议使用,后续如果要修改x坐标的计算逻辑,很容易出现只改了一处、漏改另一处的问题。


内容的提问来源于stack exchange,提问作者HelloCW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:36:17