viple入门(五)

(1)自定义活动

自定义活动,用来创建新的组件、服务、函数或者其他代码模块,使用最多的是创建函数。

函数是对一个功能的封装,在调用的时候执行,没有调用的时候则不执行。函数可能有参数,可能没有参数,如果有参数,则是形式参数,主要用于占位置。在调用时,如果函数有形式参数,则需要传递实际参数,即传参。

在viple中,把活动拖到Main中,即为调用。

自定义活动中,可以没有形式参数,也可以有一个形式参数,也可以有多个形式参数。

1.创建自定义活动

拖一个自定义活动到Main中,右键选择Rename进行重命名,命名要根据封装的功能来进行命名,达到见名之意的目的。

在自定义活动print上双击,进入print自定义活动中,找到Modify Inputs右侧的黄色按钮,点击该按钮可创建形式参数。

第1种情况:不传递参数

进入print自定义活动后,不创建形式参数。直接编写逻辑即可

Main中拖入一个数据,并将值写为2。将数据传入到自定义活动print中,弹出数据连接,左边的Value对应的是实际参数,右边的Taget对应的是形式参数,由于没有参数传递,所以,实际参数和形式参数都是空白,点击确定即可

效果:

该程序等价于以下程序:

上面的程序,不过是把行打印封装到了自定义活动print中而已。其他的地方需要打印的时候,可以复用自定义活动print,实现了对打印功能的封装。

第2种情况:传递1个形式参数

上一个案例中,没有进行传参,所以,程序可以直接改为为不带有自定义活动的形式。

假设有一个需求,有的人要打印数字1、有的人要打印数字2、还有的人要打印数字3

还有可能:有的人打印1颗星(*),有的人打印2颗星(**),有的人打印3颗星(***)

不使用自定义活动,则程序如下:

但是,如果我们要打印是100嘞,10000颗星嘞,使用拷贝复制的方法,肯定能做,但程序就比较庞大了,且需要大量的时间。此时,我们需要使用循环和自定义活动来解决该问题。

首先创建一个自定义活动,用于打印数字N,当传入的是1,则打印1,;传入的是2,则打印2,闯入的是3,则打印3,传入的是n,则打印n。现在不知道具体打印数字几,所以,设置一个形式参数占位置。

编写打印n的逻辑

需要注意的是,由于该自定义活动会用到多次,且后期打算放在循环中,所以,打印后,需要将输出连接到右侧的三角形位置(三角形表示输出值,Outgoing value;圆圈表示通知,即notifications,在自定义事件中会用到)

注意:形式参数的引用方法为:instance.形式参数名称

Main中编写循环,获取到数字1、2、3,并分别将这三个数传入printN中即可,所以,首先需要使用循环打印出数字1、2、3

接下来,把图中的

修改为自定义活动,也就是

根据Target中的形式参数n去找对应的实际参数number,并填写上,实现参数传递

整体程序以及测试结果如下:

第3种情况:传递2个形式参数

假设需要计算两个数相加,此时,不知道具体是哪两个数相加,所以,需要设置两个形式参数占位置,整体的自定义活动就是做加法功能,综上,自定义活动的名称可以设置为add,形式参数有两个,可以分别设置为a和b。注意:形式参数a和b的类型是整型,后面传递参数的时候,实际参数的类型也必须为整型。

编写两个数相加的逻辑

接下来进入Main中,编写实际参数

传递参数:将与并活动的输出连接到自定义活动add的输入,弹出数据连接窗口,此时,根据Target中的形式参数去找对应的实际参数,a表示的第一个加数,对应的实际参数是first,所以,将first写在Value侧的第一个位置,表示的含义是:占位的形参a,对应的实际参数是first,因为first的值是100,所以a的值就是100了,。同样的道理,b对应的是second,其值为200。

将计算结果打印并测试

如果将数据活动中的两个值分别改为300,400,则计算结果为700。

(2)自定义事件

事件分为两种类型,内建事件和自定义事件,在之前的博客中已经写了内建事件(按键事件和释键事件)

自定义事件:系统没有封装好的事件,需要用户自行定义如何触发。

简单的自定义事件案例:

首先创建自定义活动,内容为数据活动,并将值写为2,将输出连接到圆形(触发事件,并且能将值一并返回

程序分析:数据活动连接到圆形,可以触发事件,并且输出值2,触发到自定义事件后,将数据2进行了打印。

稍微复杂的自定义事件案例:

案例:当计数器数到8的时候,触发自定义事件,并执行后续程序。

由于需要传递一个参数进来,故在自定义活动test中设置一个形式参数,来接收外部的数据8。

Main中:

测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信号发送与处理-上

问题 按下 Ctrl C 后,命令行中的前台进程会被终止。为什么??? 什么是信号? 信号是一种 "软件中断",用来处理异步事件 内核发送信号到某个进程,通知进程事件的发送事件可能来自硬件…

基于 golang 从零到一实现时间轮算法 (三)

引言 本文参考小徐先生的相关博客整理,项目地址为: https://github.com/xiaoxuxiansheng/timewheel/blob/main/redis_time_wheel.go。主要是完善流程以及记录个人学习笔记。 分布式版实现 本章我们讨论一下,如何基于 redis 实现分布式版本的…

RuntimeError: Distributed package doesn‘t have NCCL built in

因为windows不支持NCCL backend 已解决 import os os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] "gloo"

TextMate v2.0.23(文本编辑器)

Mac上好用的文本编辑器是哪个?TextMate 2 mac版是Macos上一款文本编辑器,支持大量编程语言并作为开源开发。该软件与“BBEdit”并成为苹果电脑上的EMACS和vim,对于程序员来说非常的适合,可以定制许多贴心的功能。为专业脚本编写者…

基于ruoyi框架项目-部署到服务器上

基于ruoyi框架项目-部署到服务器上 文章目录 基于ruoyi框架项目-部署到服务器上1.前端vue编译,后的dist下内容打包(前后端分离版本需要)2.后端打包成jar包(如果是thymeleaf仅需打包jar)3.上传到服务器目录下4. docker部…

2023北京1024城市开发者聚会总结

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

2011年408计网

第33题 TCP/IP 参考模型的网络层提供的是()A. 无连接不可靠的数据报服务B. 无连接可靠的数据报服务C. 有连接不可靠的虚电路服务D. 有连接可靠的虚电路服务 本题考查TCP/IP 参考模型的网络层 若网络层提供的是虚电路服务,则必须建立网络层的…

Magic Bullet Suite v2024.0.1

Red Giant Magic Bullet Suite是一套AE视频后期处理软件,适用于Premiere Pro、After Effects等视频编辑软件。它提供了多种精美的视频特效和调色工具,使得视频制作更加专业和出色。 Magic Bullet Suite包括多个插件,其中最为知名的是Magic B…

Flink SQL TopN语句详解

TopN 定义(⽀持 Batch\Streaming): TopN 对应离线数仓的 row_number(),使⽤ row_number() 对某⼀个分组的数据进⾏排序。 应⽤场景: 根据 某个排序 条件,计算 某个分组 下的排⾏榜数据。 SQL 语法标准&am…

【软考】2023下半年系统集成项目管理工程师案例分析真题(第五批次)

2023下半年系统集成项目管理工程师案例分析真题(第五批次) 案例一 (17分)-配置管理案例二 (20分)-进度管理案例三 (18分)-风险管理案例四 - 人力资源管理 系列文章版本记录 案例一 (17分)-配置管理 某游戏公…

15 款 PDF 编辑器帮助轻松编辑、合并PDF文档

PDF 编辑器在当今的数字环境中至关重要,因为 PDF 已成为共享和存储信息的首选格式。只需几分钟,可靠的 PDF 编辑器即可让用户能够根据其特定需求修改、定制和定制文档。在本文中,我们全面汇编了 15 款最佳免费 PDF 编辑器,让您可以…

SwiftUI Swift 多个 sheet

今天做一个多个 sheet 的效果,点击下面三个按钮打开不同的 sheet 。 Show me the code import SwiftUIenum CurrentActiveSheet: Identifiable {case add, edit, deletevar id: Int {hashValue} }struct MoreSheet: View {State var currentActiveSheet: CurrentAc…

Java 设计模式——状态模式

目录 1.概述2.结构3.案例实现3.1.抽象状态类3.2.具体状态类3.3.上下文类3.4.测试 4.优缺点5.使用场景 1.概述 【例】通过按钮来控制一个电梯的状态,电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可…

GNU链接脚本详解

0. 前言 每一个链接都是由链接脚本控制的,链接脚本是用链接命令语言编写的脚本。链接都会用到一个链接脚本,如果你没有指定自己的脚本,就会使用默认的链接脚本。可以用 "--verbose" 命令行选项显示默认的连接脚本。指定命令行参数…

微服务之初始微服务

文章目录 一、服务架构演变1.单体架构2.分布式架构 二、认识微服务三、总结四、微服务技术对比五、SpringCloud注意 一、服务架构演变 1.单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。 优点: 架构简单部署成本…

G-LAB IT实验室【11月】网工公开课 即将开始~

带你一起走进网工的世界!G-LAB网工入门免费公开课即将开讲!无论是想学习基础网络组网还是网络互通技术实施,这个公开课都是你不容错过的! 公开课课程为期两天,11月7日&11月8日晚20:00 分享主题…

MFC-网络编程TCP服务端(NBlockSocket)

目录 1、NBlockSocket.h类: (1)、Init接口函数 (2)、Register接口函数 (3)、Send接口函数 (4)、Accept接口函数 (5)、Recv接口函数 2、实现…

分布式任务调度(00)--Quartz

1 任务调度整体流程 2 组件 调度器 :工厂类创建Scheduler,根据触发器定义的时间规则调度任务任务:Job表示被调度的任务触发器:Trigger 定义调度时间的元素,按啥时间规则执行任务。一个Job可被多个Trigger关联&#xf…

AI 绘画 | Stable Diffusion 图生图

图生图简介 Stable Diffusion 不仅可以文生图,还可以图生图。文生图就是完全用提示词文本去生成我们想要图片,但是很多时候会有词不达意的感觉。就像我们房子装修一样,我们只是通过文字描述很难表达出准确的想要的装修效果,如果能…

基于element-ui封装可配置表单组件

“vue”: “^2.7.13” “element-ui”: “^2.15.7” 代码地址 【说明】 该组件时使用vue3&#xff08;vue2.7&#xff09;语法封装&#xff0c;使用时可用vue2语法使用也可以使用vue3语法使用 一、vue2语法使用案例 基础用法 <template><div class"form-demo…