- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 Tomas Petricek 和 Jon Skeet(两位 SO 大师,顺便说一句,感谢他们两人)的优秀著作“真实世界函数式编程”。
以下函数(第 277 页)介绍了一种计算数组三点平均值的方法,其中将边值视为特殊值:
let blurArray (arr:float[]) =
let res = Array.create arr.Length 0.0
res.[0] <- (arr.[0] + arr.[1]) / 2.0
res.[arr.Length-1] <- (arr.[arr.Length - 2] + arr.[arr.Length -1 ] )/2.0
for i in 1 .. arr.Length - 2 do
res.[i] <- (arr.[i-1] + arr.[i] + arr.[i+1]) / 3.0
res
let computeElementsAverage (myArray:float[]) myIndex (myElement:float) =
match myIndex with
| 0 -> (myArray.[0..1] |> Array.average )
| lastInd when lastInd = (myArray.Length -1 ) -> (myArray.[lastInd-1..lastInd] |> Array.average )
| anIndex -> (myArray.[anIndex -1 .. anIndex + 1 ] |> Array.average )
let blurArray' (arr:float[]) =
let mappingFcn = arr |> computeElementsAverage
arr |> (Array.mapi mappingFcn)
最佳答案
我认为一个不错且功能更强大的替代方法是使用 Array.init
.此函数允许您通过指定用于计算每个位置的元素的函数来创建数组。
这看起来仍然非常像原始代码,但现在不需要任何显式更改(现在隐藏在 Array.init
中)。事实上,我可能会在本书的修订版中使用它:-)。
let blurArray (arr:float[]) =
Array.init arr.Length (fun i ->
if i = 0 then (arr.[0] + arr.[1]) / 2.0
elif i = arr.Length - 1 then (arr.[arr.Length - 2] + arr.[arr.Length - 1] )/2.0
else (arr.[i-1] + arr.[i] + arr.[i+1]) / 3.0 )
let fillArray offset f (arr:float[]) =
Array.init arr.Length (fun i ->
f arr.[max 0 (i-offset) .. min (arr.Length-1) (i+offset)])
f
使用每个点的邻居子数组调用,最多
offset
左右邻居(由于
max
和
min
检查,这不会越界)。现在您可以将模糊写为:
arr |> fillArray 1 Seq.average
fillArray
,创建子数组会有点低效 - 您可能可以通过使用
ArraySegment
使其更快或者通过将数组的相关部分复制到本地可变数组。但它确实看起来很漂亮和实用!
关于.net - F# 函数耦合迭代 : performance issue and preferred functional style,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42877295/
为了使用androidx.preference,我应该将依赖添加到build.gradle 图片 A 来自 https://developer.android.com/jetpack/androidx
我正在尝试从我的应用程序设置 (preferences.xml) 的布局中检索 SeekBarPreference。但是,当我尝试将 findPreference("font_size") 转换为 S
我的需求 拥有一个充满偏好的主屏幕 (main_screen) 单击此 main_screen 中的一个首选项(pref1)会打开一个 设置子屏幕(sub_screen) 在这个 sub_screen
我正在使用 Eclipse 3.7 (Indigo) 作为 Eclipse 插件。该插件将通过产品文件打包为独立应用程序。安装将是多用户安装,如 this link 的场景 2 中所述。 。这样就会有
Preferences.flush() 和 Preferences.sync() 有什么区别? 来自Javadoc(flush()): Forces any changes in the conten
在我的 AppDelegate.m 中,如果用户还没有进入设置面板,我会尝试从我的 Preference Bundle 中初始化默认值。初始化运行,我看到了符合我偏好的正确数量的对象,但它们都是空的,
我有 CheckBoxPreference 和其他 2 个:一个是 Edit Test Pref。另一个是 ListBox Pref。我如何启用列表框首选项和禁用编辑文本首选项。 CheckBoxPr
我想使用“prefer source”选项安装所有由我维护的依赖项,以及使用“prefer dist”选项安装所有其他非我维护的依赖项。 Composer 可以吗?我在想可能有这样的东西,但我找不到:
查看PHP Composer的install命令的帮助,看到以下两个选项 $ composer help install Options: --prefer-source Fo
我无法解决错误的问题: incompatible types: no unique maximal instance exists for type variable T with upper bou
我的任务是使用 POSIX 线程编写读写实现。我想知道我的实现对于这两种情况是否正确: 已删除可怕的尝试 2 号尝试 读者首选: 变量: int readersActive_; sem_t lock_
我正在尝试使用上面的工具栏为我的应用创建一个设置窗口,以输入“后退”按钮等。但是我总是这个错误。 错误 呈现期间引发的异常:android.support.design.widget.AppBarLa
Coverity 实例详细信息: SA 版本:8.6连接:8.7 尝试将缺陷上传到 coverity 实例时,出现以下错误 正在连接到服务器 xxx.xxx.com:9090[错误] SSL 请求失败
在我当前的应用程序中,我已将偏好设置的导入从“android.preference.Preference”更改为“android.support.v7.preference.Preference”,因
在学习旧教程 (Créez des applications pour Android -> openclassroom) 时,我被 PreferenceActivity 类中的这个已弃用的方法 ad
我想在我的应用程序中使用“API Demos/app/preferences/1.preferences from XML”布局,但我不知道在哪里可以找到源文件。我在 API 演示示例中进行了搜索,但
我必须使用 weblogic.xml 在 Weblogic 12c 服务器 (12.2.1) 上 它是基于 Jersey 1.9 的 REST 应用程序。 (Jersey 1.x JAX-RS RI)
我有一些简单的代码,我正在使用它来学习使用路标库的 OAuth 身份验证。我正在尝试使用 java.util.prefs.Preferences 将请求 token 、 token secret 和
如果没有特殊要求,我们可以使用android提供的框架来创建系统样式的preference screen,在其内部可以包含preferencecategory和preference<con
我需要基于另一个应用构建一个应用。在我的 PreferenceScreen 中,我有 2 个 ListPreference 对象。第二个依赖于第一个并禁用,直到选择第一个(仍然需要弄清楚) 我想将第一
我是一名优秀的程序员,十分优秀!