F# - 访问控制

F# - 访问控制 首页 / F#入门教程 / F# - 访问控制

访问控制指定代码的可访问性。通过使用这些,您可以指定数据、方法、类等的作用域。

F#中有3种类型的访问控制:

链接:https://www.learnfk.comhttps://www.learnfk.com/fsharp/f-sharp-access-control.html

来源:LearnFk无涯教程网

  1. Public or Default
  2. Private
  3. Internal

F# Public示例

公共访问控制,也称为默认访问控制。它对所有人都是可访问的。如果您没有在代码中显式指定任何访问控制,则默认情况下它遵循公共访问控制。

type AccessControl() = 
 member public x.a = 10 
 member public x.display() = 
  printfn "This is public method"


let ac = new AccessControl()    
ac.display()
printfn "a = %d" ac.a

输出:

This is public method
a = 10

F# Private示例

私有访问控制受到的限制最多,范围也有限。F#提供private关键字来声明类或类型中的私有成员。私有的范围仅限于申报的当地挡路。

type AccessControl() = 
 member private x.a = 10
 member private x.display() = 
  printf "This is private method"

let ac = new AccessControl()
ac.display()         // display method is private so can't be accessable ouside the type
printf "a= %d" ac.a  // variable is private.

输出:

error FS0491: The member or object constructor 'display' is not accessible. 
Private members may only be accessed from within the declaring type.

F# Internel 示例

内部访问控制只能从同一程序集访问。程序集是编译器在编译F#代码后自动生成的文件。它可以是动态链接库(DLL)或可执行文件(Exe)。

无涯教程网

type AccessControlIN() = 
 member internal x.a = 10
 member internal x.display() = 
  printfn "This is internal method"
  
let aci = new AccessControlIN()
aci.display()
printfn "a= %d" aci.a

输出:

This is internal method
a= 10

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

软件测试52讲 -〔茹炳晟〕

Vue开发实战 -〔唐金州〕

编译原理之美 -〔宫文学〕

全栈工程师修炼指南 -〔熊燚(四火)〕

高并发系统设计40问 -〔唐扬〕

物联网开发实战 -〔郭朝斌〕

超级访谈:对话张雪峰 -〔张雪峰〕

深入浅出可观测性 -〔翁一磊〕

技术领导力实战笔记 2022 -〔TGO 鲲鹏会〕

好记忆不如烂笔头。留下您的足迹吧 :)