当我在智能合约中发现两种类型的功能时,我一直在阅读文档并评估示例:查看和更改方法。
// 视图方法是只读的。它们不会修改状态,但通常会返回一些值。
// change 方法可以修改状态。但是您在调用时不会收到返回值。
来自https://docs.nearprotocol.com/hackathon/hackathon-startup-guide-10-min
这些要求有多严格?如果这些假设不成立(例如,在视图方法中修改状态或在更改方法中未进行任何修改),将会发生什么?
当我在智能合约中发现两种类型的功能时,我一直在阅读文档并评估示例:查看和更改方法。
// 视图方法是只读的。它们不会修改状态,但通常会返回一些值。
// change 方法可以修改状态。但是您在调用时不会收到返回值。
来自https://docs.nearprotocol.com/hackathon/hackathon-startup-guide-10-min
这些要求有多严格?如果这些假设不成立(例如,在视图方法中修改状态或在更改方法中未进行任何修改),将会发生什么?
如果您尝试更改视图函数中的状态,则视图调用将失败。差异实际上仅在您调用该函数时才表现出来。视图函数应该通过调用,near view
而更改函数应该通过调用near call
。
正如 berryguy 所说,near view
如果函数试图改变状态,将会失败。但是,我在这里建议https://github.com/nearprotocol/NEPs/pull/3#discussion_r306526647限制是人为的,应该放弃。我们应该允许用户运行任何函数near view
并将其视为空运行,因为它有多种很好的用法: