📜  Julia 中的纯函数和修饰符

📅  最后修改于: 2022-05-13 01:54:32.636000             🧑  作者: Mango

Julia 中的纯函数和修饰符

函数式编程现在非常普遍,我们必须编写一个函数来更新和修改变量或根据需要进行一些修改。在 Julia 中,我们有两种方法来更新和修改纯函数的变量和对象,其他的是修饰符,让我们通过示例一一查看。

纯函数

当我们正在处理一个函数并且不使用作为参数传递的那个对象来执行任何类型的更改时。或者我们可以说,我们需要创建同一个类的单独实例来更新变量并返回新更新的对象。

假设我们有一个学生结构,该结构具有学生姓名、学生卷号、学生手机号码和学生地址等属性,我们正在初始化所有变量以进行演示。

Julia
# Create Structure Student 
struct Student
     name::String
     address::String
     roll::Integer
     mobile::Integer
end
  
# Initialize the Structure Student
gfg = Student("ABC", "DEF", 100, 100000000)


Julia
# Create a Function name changeMobile
  
function changeMobile(stud::Student, newmobile::Integer)
      name = stud.name
      address = stud.address
      roll = stud.roll
      demo_gfg = Student(name, address, roll, newmobile)
      return demo_gfg
end


Julia
# Use the changeMobile function 
changed_gfg = changeMobile(gfg, 400000000)
  
println(changed_gfg)


Julia
# Create Structure Student 
struct Car
     name::String
     number::String
     owner::String
     price::Float64
end
  
# Initialize the Structure Car
gfg = Car("ABC", "DL123", "Kiki", 45000.00)


Julia
# Create a Function name changePrice
  
function changePrice(car::Car, newprice::Float64)
      name = car.name
      number = car.number
      owner = car.owner
      gfg = Car(name, number, owner, newprice)
      return gfg
end


Julia
# Use the changePrice function 
gfg = changePrice(gfg, 500000.500)
  
println(gfg)


现在假设我们要更新学生的手机号码,我们必须做一个函数名changeMobile在这里我们必须传递学生类型的对象,其他是新的手机号码来获取更新并返回新的学生类型对象更新。

朱莉娅

# Create a Function name changeMobile
  
function changeMobile(stud::Student, newmobile::Integer)
      name = stud.name
      address = stud.address
      roll = stud.roll
      demo_gfg = Student(name, address, roll, newmobile)
      return demo_gfg
end

到目前为止,我们已经创建了我们的函数。现在我们必须使用这个函数来更新现有学生的手机号码,而不是直接改变变量。

朱莉娅

# Use the changeMobile function 
changed_gfg = changeMobile(gfg, 400000000)
  
println(changed_gfg)

输出 :

修饰符

当我们正在处理一个函数并通过使用作为参数传递的那个对象来执行任何类型的更改时。或者我们可以说我们不需要创建同一个类的单独实例来更新变量并返回相同的更新对象。

假设我们有一个汽车结构,该结构具有车名、车号、车主姓名和车价等属性,我们正在初始化所有变量以进行演示。

朱莉娅

# Create Structure Student 
struct Car
     name::String
     number::String
     owner::String
     price::Float64
end
  
# Initialize the Structure Car
gfg = Car("ABC", "DL123", "Kiki", 45000.00)

现在假设我们必须更新汽车的价格,我们必须创建一个函数名称changePrice ,其中我们必须传递 Car 类型的对象,其他是更新后的汽车价格以获取更新并返回更新后的同一个 Car 实例类型对象。

朱莉娅

# Create a Function name changePrice
  
function changePrice(car::Car, newprice::Float64)
      name = car.name
      number = car.number
      owner = car.owner
      gfg = Car(name, number, owner, newprice)
      return gfg
end

到目前为止,我们已经创建了我们的函数。现在我们必须使用这个函数来更新现有汽车的价格,而不是直接改变变量。

朱莉娅

# Use the changePrice function 
gfg = changePrice(gfg, 500000.500)
  
println(gfg)

输出 :

我们应该更喜欢哪一种方法来编写任何函数?

我们总是需要更喜欢纯函数方法 因为我们不会丢失我们的原始数据,并且也可以拥有我们可以使用的更新数据。与使用修饰符的程序相比,这种方法创建的函数开发速度更快,出错的可能性也更小。