gpt4 book ai didi

function - 私有(private)函数与嵌套函数

转载 作者:行者123 更新时间:2023-12-05 01:09:23 29 4
gpt4 key购买 nike

问题是:

何时使用私有(private)函数,何时使用嵌套函数? (我在问 F# 但也许答案可能与其他功能语言相关)

一个小例子

namespace SomeName

module BinaryReaderExt =
open System.IO

let seek (reader : BinaryReader) positions =
reader.BaseStream.Seek(positions, SeekOrigin.Current) |> ignore

module Mod =
open System.IO

let private prFun reader:BinaryReader =
//do something
BinaryReaderExt.seek reader 10L


let outerFun (stream :System.IO.Stream) =
let reader = new System.IO.BinaryReader(stream)
let seek = BinaryReaderExt.seek reader

let nestedFun () =
seek 10L
//do something

nestedFun()
prFun reader

嵌套函数可以使用更高范围的数据是一个很大的好处。也不会污染周围的模块。但是看起来很笨拙,不是吗?特别是当有一些大型嵌套函数时

相反,私有(private)函数可以公开并进行测试。而且它们看起来更具可读性

你怎么看?

最佳答案

我用 private模块中的函数经常出现——通常用于模块中其他函数使用的“帮助”函数,但不需要暴露给外部代码。
private 的另一个用例函数只是使代码更具可读性。如果一个函数嵌套在另一个函数中,但它太长而无法阅读——例如,如果嵌套函数的代码占它所包含的函数长度的一半以上——我通常会将它移到模块级别并使其成为 private所以调用者函数的代码更容易理解。

关于function - 私有(private)函数与嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15858935/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com