首页 > 系统相关 >powershell 7 初体验

powershell 7 初体验

时间:2022-09-20 21:14:24浏览次数:90  
标签:初体验 Console string System powershell extraValue id name

支持枚举定义,类定义\类继承\接口继承,不支持接口定义\泛型类定义\泛型函数定义,但是作为shell脚本已经相当让人惊喜了, 基本逻辑可以直接套用C#语法格式

# enum_sample/main.ps1

enum TestEnum
{
    None = 0
    Hello = 1
    World = 2
}

[Flags()] enum TestFlags
{
    None = 0
    Read = 1
    Write = 2
}

# 声明的时候加类型就会有类型检查
[TestEnum] $a = [TestEnum]::Hello;
# 或者 Write-Output $a
[System.Console]::WriteLine($a);
[System.Console]::WriteLine($a -eq 1);
[System.Console]::WriteLine("===");
[TestFlags] $b = [TestFlags]::Read + [TestFlags]::Write;
[System.Console]::WriteLine($b);
[System.Console]::WriteLine($b.HasFlag([TestFlags]::Read));

输出结果

Hello
True
===
Read, Write
True
# class_sample/TestClass.psm1

class TestClass
{
    [int] $id = 0;
    [string] $name = "";

    TestClass([int] $id, [string] $name)
    {
        $this.id = $id;
        $this.name = $name;
    }

    [string] ToString()
    {
        return [string]::Format("id: {0}, name: {1}", $this.id, $this.name);
    }
}
# class_sample/main.ps1

# 使用另一个文件定义的类, 注意这里要写相对于文件的相对路径
Using module "./TestClass.psm1"

# 继承自定义类
class TestClassB : TestClass
{
    [string] $extraValue = "";

    TestClassB([int] $id, [string] $name, [string] $extraValue) : base($id, $name)
    {
        $this.extraValue = $extraValue;
    }

    #override
    [string] ToString()
    {
        return [string]::Format("id: {0}, name: {1}, extraValue: {2}", $this.id, $this.name, $this.extraValue);
    }

    [string] ToStringEx()
    {
        return [string]::Format("id: {0}, name: {1}, extraValue: {2}", $this.id, $this.name, $this.extraValue);
    }
}

# 继承系统类
class TestClassC : System.IComparable
{
    [int] $value;

    TestClassC([int] $value)
    {
        $this.value = $value;
    }

    [int] CompareTo([object] $other)
    {
        return $this.value - $other.value;
    }
}

[TestClass] $a = [TestClass]::new(123, "tom");
[System.Console]::WriteLine($a.ToString());

[TestClass] $b = [TestClassB]::new(123, "jerry", "mouse")
[System.Console]::WriteLine($b.ToString());
# 这里不转类型也行, 有点可惜
# [System.Console]::WriteLine($b.ToStringEx());
[System.Console]::WriteLine(([TestClassB])$b.ToStringEx());

[TestClassC] $c1 = [TestClassC]::new(1)
[TestClassC] $c2 = [TestClassC]::new(2)
[System.Console]::WriteLine($c1 -gt $c2);

输出结果

id: 123, name: tom
id: 123, name: jerry, extraValue: mouse
id: 123, name: jerry, extraValue: mouse
False

标签:初体验,Console,string,System,powershell,extraValue,id,name
From: https://www.cnblogs.com/lunoctis/p/16712533.html

相关文章

  • 【微服务】Nacos初体验
    SpringCloud-Nacos初体验......
  • PowerShell 函数
    Powershell中的函数使用关键字(function)声明,后面依次跟函数名称、左右大括号。函数将执行的代码包含在这些大括号中。#创建函数FunctionGetPSversion{......
  • 记如何让Visual Studio、Powershell和Git for Windows和谐共处
    目录前言环境解决方案步骤原理前言VisualStudio在2019版本中正式加入了对Git的支持。但如果未进行过相关的环境配置,在VS中使用内置Git将无法与SSH仓库同步。尤其是习惯......
  • PowerShell 哈希表 @{}
    PowerShell哈希表是一种数据结构,用于存储键值对(也称为字典或者关联数组)语法:$Var=@{<key1>=<value1>;<key2>=<value2>;.....;<keyN>=<valueN>;}examp......
  • Windows11中windowsPowerShell运行hexo命令报错
    修改设置Windows11安装后,系统自带的终端输入命令,git和node都可以使用,hexo不可以,提示:hexo:无法加载文件C:\Users\username\AppData\Roaming\npm\hexo.ps1`,因为在此系......
  • Git 初体验及其常用命令介绍-上
    在「Git的安装流程及步骤」一文中,我们已经把Git安装成功了,现在,就让我们一起体验Git的魅力吧!不知道大家是否还记得,在Git安装完成的时候,我们曾在GitBash中输入git......
  • Git 初体验及其常用命令介绍-下
    在前一篇博文「Git初体验及其常用命令介绍(上)」中,我们已经了解了Git的一些常用命令了,包括status、init、add、commit和log等,下面我们接着上一篇博文的内容,继续介绍Git......
  • 3.2 Express中间件的初体验
    1.定义中间件函数constexpress=require('express');constapp=express();constmw=function(req,res,next){console.log('这是最简单的中间件函数');......
  • PowerShell教程 - 汇总
    更新记录转载请注明出处:2022年9月1日发布。2022年8月15日从笔记迁移到博客。章节链接PowerShell介绍(IntroductiontoPowerShell)https://www.cnblogs.c......
  • java springboot 初体验 (十二)对接eureka
    上一篇javaspringboot初体验(十一)对接mysqlhttps://www.cnblogs.com/zwjvzwj/p/16620045.html搭建一个eureka注册服务 创建服务     pom文件......