请选择 进入手机版 | 继续访问电脑版

星界边境中文论坛-StarboundForum

查看: 2900|回复: 2

[MOD教程] 【并没有什么卵用的知识】关于sb json patch里的test

[复制链接]
  • TA的每日心情
    难过
    10 小时前
  • 签到天数: 1518 天

    连续签到: 23 天

    [LV.Master]劳模

    237

    主题

    2046

    帖子

    1万

    积分

    超级版主

    【数据删除】

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    13289

    突出贡献荣誉管理劳模附体

    发表于 2016-9-10 19:42:14 | 显示全部楼层 |阅读模式
    参考资料:http://helmet.kafuka.org/sbmods/json/

    RFC 6902里有规定test,但是sb对它作出了一些扩展。

    原规定是要比较value,但是在sb里有项额外功能:检查路径是否存在。如果路径确实存在,则会执行同组([])内剩下的命令。
    举例:

    1. <p><p>[
    2.         [
    3.                 { "op": "test", "path": "/foo" },
    4.                 { "op": "add", "path": "/foo", "value": 1 },
    5.                 { "op": "add", "path": "/foo", "value": 2 }
    6.         ],
    7.         [
    8.                 { "op": "add", "path": "/foo/-", "value": 4 },
    9.                 { "op": "add", "path": "/foo/-", "value": 5 },
    10.                 { "op": "add", "path": "/foo/-", "value": 6 }
    11.         ]
    12. ]
    复制代码


    如果路径/foo存在,那么 { "op": "add", "path": "/foo", "value": 1}和{ "op": "add", "path": "/foo", "value": 2}就会被执行,但接下来的3条命令由于在另一个[]中,不受test影响;
    若/foo不存在,{ "op": "add", "path": "/foo", "value": 1}及之后的{ "op": "add", "path": "/foo", "value": 2}命令就不会被执行——但是另一个[]中的不受影响

    同时还有一个可选参数"inverse",为true时它会翻转test的结果。
    用法:
    { "op": "test", "path": "/foo", "inverse" : true },此时是路径存在就不执行下面的,不存在反而执行



    这玩意有什么用啊!?
    兼容咯……
    比如说你做一个跨版本的汉化,版本中间加了一个路径,你要汉化那块,那么旧版本log里会报错。
    用test的话下面的命令不执行就没有了



    We Secure. We Contain. We Protect. And We Never Forget.
    我的心属于你,可你什么时候才能空出属于我的位置……能早一点么……
    也许,那时侯我就已经失去了最后的机会了吧您配么?
    0 0.5 0.7 i 2i -10 0.6 0.8 0.9 10i -10 -100/1 我的你,你的我
  • TA的每日心情
    无聊
    2019-5-6 22:09
  • 签到天数: 345 天

    连续签到: 1 天

    [LV.8]液态能源

    42

    主题

    364

    帖子

    1189

    积分

    超级版主

    幻想の喵

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    1189

    荣誉管理

    QQ
    发表于 2016-9-11 07:32:05 | 显示全部楼层
    替换一个不存在路径的参数只会在log里有记录不会导致游戏报错
    但是在一个不存的路径删除或其他操作的话会直接游戏崩溃
    这个其实是非常好的提高兼容性的功能

    点评

    ……删除操作真的有很大价值么……  详情 回复 发表于 2016-9-11 21:17
    回复

    使用道具 举报

  • TA的每日心情
    难过
    10 小时前
  • 签到天数: 1518 天

    连续签到: 23 天

    [LV.Master]劳模

    237

    主题

    2046

    帖子

    1万

    积分

    超级版主

    【数据删除】

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    13289

    突出贡献荣誉管理劳模附体

     楼主| 发表于 2016-9-11 21:17:50 | 显示全部楼层
    NyaCo 发表于 2016-9-11 07:32
    替换一个不存在路径的参数只会在log里有记录不会导致游戏报错
    但是在一个不存的路径删除或其他操作的话会直 ...

    ……删除操作真的有很大价值么……
    We Secure. We Contain. We Protect. And We Never Forget.
    我的心属于你,可你什么时候才能空出属于我的位置……能早一点么……
    也许,那时侯我就已经失去了最后的机会了吧您配么?
    0 0.5 0.7 i 2i -10 0.6 0.8 0.9 10i -10 -100/1 我的你,你的我
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|星界边境中文论坛-StarboundForum  

    GMT+8, 2019-6-16 20:42 , Processed in 0.077833 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表