{已解决!}需要认真学习Quicker的表达式,有没有系统性教材?

功能建议 · 2918 次浏览
winsion 创建于 2024-08-31 15:33

quicker 毋庸置疑地强

但是使用表达式能 尽可能提高编写效率,简化代码。

(虽然我有arduino , python , VB 的经验) 恕我愚钝,quicker的模式好像不是那样。

我需要有  由最简单传值的例子 逐步熟悉表达式的 $ =  和 $$ 的案例,以实际案例来理解。 或者是一个系统性的教程?

找了很久没找到,希望得到各位 表达式高手 的指点。谢谢

--------------------

暂时计划先用 https://getquicker.net/QA/Question/27400   顶着。。 

然后啃: https://www.wolai.com/dGHmpQ3aArVFejhrQiNxTj 

--------- 再次谢谢大佬们!  2024-08-31  22:56

winsion 最后更新于 2024/8/31

回复内容
darcyc 2024-08-31 17:05
#1

概念

看了一下你的表述,发现你似乎没有意识到 Quicker表达式(以$=开头) 实际上是 C# 表达式。

“唯一的区别”在于:可使用花括号引用Quicker内的变量。

对于C#语法的使用,可以看表达式的文档,或直接在网络查询。

对于 $$ 的情况,是文本插值功能,而不是表达式,请见文本插值

在使用文本插值时,我们基本只使用简单的花括号插值。


结论

有了上面的解释,我们就可以回答「为什么没有相关的教程?」这个问题了:

对于 $= 表达式,我们应学习C#语法。

对于 $$ 文本插值,我们只需要使用最简单的文本插值即可。

我相信这个解释会对你的思绪有显著的帮助,当然,我并不否认有一些「特别的」小技巧,

但就算不知道这些小技巧,也不会影响整个步骤动作的制作以及作者制作的专业性。


建议

1. 个人建议是学习简单的表达式,可以加速部分步骤的制作(例如如果条件模块),但过度复杂的表达式不会帮助动作的制作(缺少大型专业IDE的调试支持),因此对于你这样的有一定编程经验的情况,往往只需要花数小时就可以“精通”在Quicker中的C#表达式的使用了。

2. 经常浏览由大佬制作的Quicker动作示例,很多小众的技巧往往都最先出现在示例动作中(而不是文档),如果你想有一些私人技巧来秀一把的话,浏览社区动作是你唯一的手段。


其他学习资料

1. 【官方】表达式高级概念

2. 【官方】知识库搜索

2. 【社区】Quicker高级开发教程

3. 【社区】Quicker示例(步骤导向)


希望对你有所帮助。

darcyc 最后更新于 2024-08-31 17:21
H-D-G 2024-08-31 17:22
#2

有编程经验学起来是很快的,表达式使用C#的语法(但并不支持所有语法,因为是用的第三方库),比较明显的区别是:

  • 表达式以$=开头(作用是告诉Quicker这是表达式,而不是纯文本)
  • 表达式中使用{varName}来访问动作中的变量
  • 表达式有两种不同的编译模式(类似LinqPad),一种是=右边的值表达式,另一种是类似函数的lambda表达式(但只需要写=>右边的部分)。
H-D-G 最后更新于 2024-08-31 17:25
winsion 2024-08-31 21:26
#3

【社区】Quicker高级开发教程   这个地方是我想要看的。

缺一个专门研究表达式写法,讨论案例的地方。 

比如我今天遇到的问题: 

提示: $=  (string){rootToken}.SelectToken("test[0].产品")  这个是可以显示Json里的某个值

但是: 当我在上一步,赋值 {k} = 1  , K为int ,下一步,使用$=  (string){rootToken}.SelectToken("test[{k}-1].产品") 的时候, 就出错,读不出值了。  难道必须要用组合文本才能用? 

类似的问题很多,需要花时间调试, 您觉得我从哪里下手,系统性学习?很不习惯中。

winsion 最后更新于 2024-08-31 21:27
H-D-G 回复 winsion 2024-08-31 21:57 :

$"test[{{k}-1}].产品"

错误的原因参考另一位大佬的解释,这里给你提供一种写法

H-D-G 最后更新于 2024-08-31 22:40
winsion 回复 winsion 2024-08-31 22:43 :

谢谢大佬!!! 我刚试过不行, 我把问题缩窄了,
请参考 第六楼。谢谢!!

darcyc 2024-08-31 21:50
#4

分析

你最新反馈的问题,实际上是一个编程概念上的问题,请让我给你讲解一下:

确实,我们提到了花括号可以作为使用Quicker内变量的一种个方法,例如你的案例中的

{rootToken} 显然就是一个Quicker变量的使用,但花括号在不同的位置有不同的作用,例如下面的情况:

"test[{k}-1].产品"

当你在字符串内书写花括号时,不难注意到,这里一定是有“语法歧义”的,这到底是一个花括号字符串,还是一个Quicker变量,还是说其他的东西。显然,这只是一个字符串而已(而字符串里的那个花括号字符显然会打破匹配的表达式规则)

你看到我上面的「语法歧义」打了引号吗,我不想让你觉得这是一个大家都会遇到的问题,事实上,我认为对于大多数程序猿来说,这大概率不是一个值得一提的问题,值得一试的方法(我知道你尝试了多次)。

因此,这只是一个编程问题,当你想组合组合字符串时,你需要使用字符串拼接的语法,例如下面的方法:

"test[" + ({k} - 1).ToString() + "].产品"

当然,上面的写法看起来十分丑,在我个人的习惯中,一旦出现这种情况,我可能会使用其他手段来做到同样的事情,例如 foreach 来进行提取,又或者是我尽量用固定的选择器来提取尽可能多的内容(提取所有项目),随后再进行后处理(提取后,再进行列表索引)


建议

1. 换句话说,如果你把你的代码写到Visual Studio 或 其他编程Pad 中,依旧也是报错的。在我有限的观察下,Quicker(C#)表达式并不适合作为C#等其他编程语言的学习环境,当书写比较多的代码时,请在其他编辑器中完成编辑,随后复制到编辑框。下面是基本的模版:

$=
// ----------------- 将所有的输入变量写在最上面
var name = {name};
var n = {n};
// ----------------- 逻辑区域(这篇区域是完全的C#代码,花括号已经全部解除)
var result = name[n];
// ----------------- 返回
return result;

2. 你同时也会注意到,即便我发送的文档中,你也很难找到一些关于编程的问题,这些问题你可以通过互联网去找到答案,现在比较流行的GPT等AI工具可以辅助你完成一些简单的事情(当然,你把相对正确的报错信息给到他,这个报错需要你在其他IDE中获得,我个人使用Quicker表达式编辑器感受是,报错不总是有意义的,人类可读可理解的)。

3. 对于一些可以使用步骤完成的内容,你可以使用步骤完成,因为当你全部使用或大部分都使用表达式时,你完全可以在开发环境制作,随后移植到Quicker(如果你想分享的话),这是大部分大佬的选择。

4. 在测试表达式时,可以使用LINQPad等其他IDE完成,这些工具往往有更好的补全/报错/调试系统

5. 你会发现我的解释中,有些是你可能意识到的,有些不是。但我觉得我有很大的把握表示:技巧的学习是没有书的通过自己在正确的道路上继续前进可能是唯一的方法。(什么?不知道正确的道路?那你至少避免掉错误的道路)

darcyc 最后更新于 2024-08-31 22:14
winsion 2024-08-31 22:23
#5

你是机器人吧?

我按你的指示来写, 结果还不是黄了? $= (string){rootToken}["test["+ {k}.ToString +"].产品"


所以,问题是,怎么纠错?   现在设定{k}=1 , 如不传参,使用数字,$= (string){rootToken}["test"][1]["产品"] , 是可以读取值。 

winsion 最后更新于 2024-08-31 22:23
darcyc 回复 winsion 2024-08-31 22:26 :

我不是机器人啊。我不回你了,我好好的写被你这样说,你代码都没抄对。

darcyc 回复 winsion 2024-08-31 22:27 :

麻烦你仔细看看,你的 ToString 后面有没有括号,函数都不会调用是吧?麻烦你端正你的态度。

winsion 回复 winsion 2024-08-31 22:36 :

不好意思啊, 我以为是, 我用案例调试了一下,我现在回复其中一个办法

winsion 2024-08-31 22:39
#6

谢谢大佬!我太弱鸡了,见笑~

使用案例进行调试 : https://getquicker.net/Sharedaction?code=05d33931-477a-4c18-a917-08d7b30d7779

上一步赋值定义{k}= 1

1.成功的方案: $= "方法1:" + (string){rootToken}.SelectToken("Manufacturers[" + {k} + "].Name")

2. 失败的方案: $= "方法2" + (string){rootToken}["Manufacturers"][" + {k} + "]["Name"]     然后,黄了

我感觉和 .tostring() 是无关的, 请指导怎么改。 截图如下:


winsion 2024-08-31 22:52
#7

问题找到了  {k} 要定义为整数, 我选错了数字,沉痛的觉悟, 谢谢大佬们!!!


winsion 最后更新于 2024-08-31 22:57
回复主贴