viple入门(五)

news2024/9/28 17:34:24

(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.coloradmin.cn/o/1181303.html

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

相关文章

Java代码如何对Excel文件进行zip压缩

1:新建 ZipUtils 工具类 package com.ly.cloud.datacollection.util;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import ja…

文件过大放不到U盘怎么办?三个方法轻松搞定!

文件过大放不了U盘我们可以从文件过大这个角度来解决一下这个问题,可以借助一些工具把文件压缩后,体积变小后,再放入U盘,使得u盘得到高效的利用,下面是推荐的一些好用的软件。 一、嗨格式压缩大师 是一款可以压缩多种…

idea 模板注释 {@link}

1. 新增组 2. 设置方法注释及变量 增加模板文本 ** * $param$ * return {link $return$} */3. 设置变量表达式 勾选跳过param 参数表达式 groovyScript("def result ;def params \"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toList();def param…

【案例卡】clickhouse:多行数据拼接在一行

一、需求 针对clickhouse数据库中,group by 分组后的字符串字段,拼接处理在一行的问题实现。在mysql中,可以用group_concat()函数来实现,而clickhouse数据库不支持此函数,特此记录实现方式。 二、clickhouse相关函数…

C++模板元模板实战书籍讲解第一章题目讲解

目录 第一题 C代码示例 第二题 C代码示例 第三题 3.1 使用std::integral_constant模板类 3.2 使用std::conditional结合std::is_same判断 总结 第四题 C代码示例 第五题 C代码示例 第六题 C代码示例 第七题 C代码示例 总结 第一题 对于元函数来说,…

AIGPT重大升级,界面重新设计,功能更加饱满,用户体验升级

AIGPT AIGPT是一款功能强大的人工智能技术处理软件,不但拥有其他模型处理文本认知的能力还有AI绘画模型、拥有自身的插件库。 我们都知道使用ChatGPT是需要账号以及使用魔法的,实现其中的某一项对我们一般的初学者来说都是一次巨大的挑战,但…

录屏软件区域录制图片特效显示,电脑怎么区域局域放大录制屏幕

对应的视频链接 录屏软件区域录制图片特效显示,电脑怎么区域局域放大录制屏幕-CSDN直播录屏软件区域录制图片特效显示,电脑怎么区域局域放大录制屏幕图片特效显示软件可以定制https://live.csdn.net/v/341731 录屏软件区域录制图片特效显示&#xff0c…

socks5代理和https代理有什么不同?各自有哪些优点?

socks5代理和https代理是两种不同的代理服务,它们在实现方式、安全性和协议特点等方面存在差异。下面我们来详细了解一下这两种代理的优点。 一、socks5代理的优点 1. 速度快 socks5代理采用了TCP协议,能够有效地减少网络延迟和数据传输速度慢的问题&…

通过docker快速部署RabbitMq

查询镜像: docker search rabbitmq拉去RabbitMq镜像: docker pull rabbitmq:management创建数据卷: docker volume create rabbitmq-home运行容器: docker run -id --namerabbitmq -v rabbitmq-home:/var/lib/rabbitmq -p 156…

Steam余额红锁的原因,及红锁后申诉方法

CSGO饰品自动上架助手使用教程 安全的余额一般是通过充值卡充值获得,再加上交易手续费再转卖给你。一般便宜不到哪去。 但你别以为余额是安全的,就万事大吉了。照样有被红锁的可能性,比如这三种: 1、Steam市场巡查机制&#xff…

UML与PlantUML简介

UML与PlantUML 1、UML与PlantUML概述2、PlantUML使用 1、UML与PlantUML概述 UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言,独立于任何具体程序设计语言…

番外---10.1 gcc+make调试程序

######### step0:理解程序调试; (原始程序文件--->目标文件---->可执行文件;) step1:掌握使用gcc的调试方法; step2:掌握使用make编译方法; ######### step0&…

JWT原理分析——JWT

了解为什么会有JWT的出现? 首先不得不提到一个知识叫做跨域身份验证,JWT的出现就是为了更好的解决这个问题,但是在没有JWT的时候,我们一般怎么做呢?一般使用Cookie和Session,流程大体如下所示:…

DVWA - 1

文章目录 Brute Forcelowhigh Command Injectionlowmediumhigh CSRFlowmediumhigh Brute Force low 1.进入到Brute Force页面,随机输入一个用户名及密码,点击登录。使用 BurpSuite查看拦截历史,找到该登录请求,右键send to intr…

第二章:人工智能深度学习教程-深度学习简介

深度学习是基于人工神经网络的机器学习的一个分支。它能够学习数据中的复杂模式和关系。在深度学习中,我们不需要显式地对所有内容进行编程。近年来,由于处理能力的进步和大型数据集的可用性,它变得越来越流行。因为它基于人工神经网络&#…

pytorch_神经网络构建5

文章目录 生成对抗网络自动编码器变分自动编码器重参数GANS自动编码器变分自动编码器gans网络Least Squares GANDeep Convolutional GANs 生成对抗网络 这起源于一种思想,假如有一个生成器,从原始图片那里学习东西,一个判别器来判别图片是真实的还是生成的, 假如生成的东西能以…

竞赛选题 深度学习手势识别算法实现 - opencv python

文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习手势识别算法实现 - opencv python 该项目较为新颖…

【Spring】bean的自动装配

目录 一.byName 二.byType 快捷书写 people1 package org.example;public class People1 {public void eat(){System.out.println("吃饭");} }people2 package org.example;public class People2 {public void sleep(){System.out.println("睡觉");} …

校园安防监控系统升级改造方案:如何实现设备利旧上云与AI视频识别感知?

一、背景与需求分析 随着现代安防监控科技的兴起和在各行各业的广泛应用,监控摄像头成为众所周知的产品,也为人类的工作生活提供了很大的便利。由于科技的发达,监控摄像头的升级换代也日益频繁。每年都有不计其数的摄像头被拆掉闲置&#xf…

第十八章:Swing自述

18.1 Swing概述 18.2:Swing常用窗体 18.2.1:JFrame窗体 package eightth;import java.awt.*; //导入AWT包 import javax.swing.*; //导入Swing包public class JFreamTest {public static void main(String args[]) { // 主方法JFrame jf new JFrame()…