Clio lang的介绍。轻松发布性能关键型JS

108 阅读6分钟

JavaScript的运行时间是单线程的,这使得它不能用于性能关键的操作。虽然你可以在你的代码中实现多线程,但仍然需要一种默认利用多线程的编程语言。

Clio是什么?

这就是Clio的作用。根据文档,Clio编程语言为多核使用提供开箱即用的支持。这意味着它可以毫无问题地在云和集群上运行。

此外,Clio将其代码编译成JavaScript,所以如果你的机器能够运行JavaScript,那么它肯定能够毫无问题地运行Clio代码。

开始使用Clio

运行Clio代码

Clio有一个安装程序,但它目前不能正常工作。出于这个原因,我们将在本文中使用在线编译器

Clio Playground

创建 "Hello World "应用程序

在Clio Playground中,编写以下代码。

export fn main:
  console.log "Hello, World!"

在第1行,创建main 方法。就像其他编程语言一样,Clio需要一个main 方法。最后,我们将使用export 关键字来导出这个函数。这使得它能够被运行。

现在,运行该代码。这将是结果。

Hello World Result

很好!我们的代码工作了。现在让我们继续学习Clio的基本原理。

在Clio中声明常量

要声明一个常量,你必须使用以下语法。

<value> => <variable_name>

你可以声明一个字符串,像这样。

"LogRocket" => websiteName

这就把数值 "LogRocket "分配给了名称为websiteName 的变量。

同样地,你可以声明一个整数和一个布尔值。

9 => numberNine
10>3 => result

首先,我们创建一个名称为numberNine 的变量,并为其赋值9 。然后,我们创建一个名为result 的变量。数字10是否大于3?然后给它赋值false

为了在命令行中显示这些常量,请写下以下代码。

export fn main:
  9 => numberNine
  10>3 => result
  "LogRocket" => websiteName 
  console.log numberNine
  console.log result
  console.log websiteName
  console.log f"Name of website is: {websiteName}"

在第5-7行,我们显示前面声明的变量的值,然后显示一个字符串,并在最后附加websiteName 的值。这将是结果。

Website Name Result

很好!我们的代码工作了。

在Clio中声明函数

要声明一个函数,请使用以下语法。

fn <function_name> <parameter 1> <parameter 2> 
  <code logic goes here>

例如,这段代码将两个数字相乘并返回一个值。

fn multiply a b:
  a * b

在这里,我们声明了一个名为multiply 的函数,它需要两个参数:ab ,然后我们将ab 相乘并返回结果。

你甚至可以在你的函数中使用console.log

fn multiply a b:
  console.log a * b

这就把a * b 的结果记录下来了。

要调用这些函数,请编写以下代码。

fn multiply a b:
   a * b

export fn main:
   multiply 4 8 -> console.log

现在,让我们使用我们的multiply 函数并将结果记录到控制台。我们将在后面学习piping( )的语法。运行该代码。这将是结果。

Multiply Function Result

如果你的函数没有返回一个值,你可以利用下面的片段。

fn multiply a b:
  console.log a * b

export fn main:
   multiply 4 12 

这就调用了multiply 函数,它将把结果记录到控制台。

下面是代码的输出。

Code Output

Voila!结果如期而出。在下一节,我们将学习ifelse 语句。

多个值之间的比较

这就是if/else 语句的语法。

if <condition>:
  <statement>
else if <condition>:
  <statement>
else: 
  <statement>

作为一个例子,让我们看一下下面这段代码。

fn equals a b:
  if a > b:
    console.log f"{a} is bigger than {b}"
  else if a = b:
    console.log f"{a} is equals {b}"
  else:
    console.log f"{a} is smaller than {b}"

export fn main:
  equals 40 10
  equals 10 40
  equals 10 10

注意,我们首先创建了一个名为equals 的函数,它接收两个参数,然后比较a 是否大于b 。如果是,那么就输出一个合适的信息。接下来,执行一个else if 语句,检查ab 是否相等。否则,通知用户,a 小于b

最后,用不同的数据集运行equals 函数。这将是输出结果。

Equals Function Output

很好!我们的代码工作了。现在让我们深入探讨更高级的话题。

深入了解Clio

使用流量

前面我们使用了管道语法()。在本节中,我们将学习flow语法。
piping操作符用于将一个函数的结果转移到另一个函数中。

请看下面的片段。

fn isBigger a b:
  a > b
export fn main:
 isBigger 10 20-> console.log 

这创建了一个名为isBigger 的函数,它可以告诉第一个数字是否比第二个数字大。继续运行isBigger 函数。然后,isBigger (false) 的结果被转移console.log 方法。结果,false 被输出到屏幕上。

False Output

你也可以连锁调用多个函数。这段代码首先创建了三个函数,调用了add 函数,并将该方法的结果转移到square 方法中。最后,它将square 的结果转移到console.log

请注意,你甚至可以应用带有缩进的管道语法,使你的代码更易读。

fn add a b:
  a + b

fn square a :
  a * a

fn subtract a b:
  a - b

export fn main:
 add 5 5 -> square  -> console.log 
 square 5 
  -> subtract 100 
  -> console.log

Took 3.98ms Output

在Clio中声明数组

要声明一个数组并打印它,请使用以下语法。

[<value_1> <value_2> <value_3>] => <variable_name>
console.log <variable_name>

例如。

export fn main:
  ["LogRocket" "FreeCodeCamp" "YouTube"]  => websites 
  [2 3 4] => integers
  [true false false] => booleanValues
  console.log websites
  console.log integers
  console.log booleanValues

让我们创建一个名为websites 的数组,其中有字符串值,创建一个名为integers 的数组,其中取整数,然后创建一个名为booleanValues 的数组,其中包含布尔值。

Boolean Values Output

很好!现在我们来学习如何映射数组中的值。

映射数组

在Clio中,为了将函数映射到数组,我们必须使用* 符号。这段代码打印出了数组中的所有项目。

export fn main:
  ["LogRocket" "FreeCodeCamp" "YouTube"]  => websites 
  websites -> * 
    console.log

注意这是用* ,告诉Clio将函数应用于数组中的每一项。在第4行,我们把这些项目记录到控制台。这就是结果。

Log Out Items Output
让我们进一步玩玩管道的语法。我们甚至可以添加多个函数,像这样。

fn add a b:
  a + b
fn square a :
  a * a

export fn main:
  [2 3 4] => integers

  integers -> * 
    square
    -> add 1
    -> console.log

在这里,我们创建了两个名为ab 的函数和一个integers 数组,然后告诉Clio,函数将在数组中的每一个项目上运行。

从第10行开始,我们在这些项目上应用square 方法,然后将square 方法的结果转移到add 函数。这将使结果递增。

Incremented Result

声明哈希图

这与JavaScript对象类似。要声明一个哈希图,使用下面的语法。

# <property_1>: <value_1> <property_2>:<value_2> => <variable_name> 

比如说。

export fn main:
  # name: "Hussain" age:19 => information
  console.log information
  console.log information.name
  console.log information.age

这个代码块创建了一个名为information 的哈希图,它有两个属性:nameage 。然后它注销了information 对象的值和它的各个属性。下面是它的样子。

Information Object Value

我们现在已经完成了本节的内容。

结论

尽管在写这篇文章的时候Clio还处于测试阶段,但它有很好的语法用法,可以鼓励干净的代码。此外,它默认支持多线程操作的事实意味着它在未来将成为性能关键型应用的可行候选者。

Clio似乎是一种很有前途的编程语言,我希望开发团队在不久的将来发布一个稳定的版本,这样它就可以在生产环境中使用。

非常感谢您的阅读!

Clio lang的介绍。轻松发送性能关键型JS》首次出现在LogRocket博客上。