小编mat*_*ser的帖子

f#读取xls文件 - 如何解析value2对象

我尝试使用F#读取xls文件,如下所示

open Microsoft.Office.Interop.Excel
let app = ApplicationClass(Visible = false)
let book = app.Workbooks.Open "test.xls"
let sheet = book.Worksheets.[1] :?> _Worksheet
let vals = sheet.UsedRange.Value2
Run Code Online (Sandbox Code Playgroud)

问题是如何将val解析为F#类型?在fsx.exe中,val显示为

'val vals: obj = [bound1
                  bound2
                  ["colname1"; "colname2"; ...]
                  [1234,5678,]...]
Run Code Online (Sandbox Code Playgroud)

我想首先检索字符串printfn "%A" vals.ToString();;表示,但 "System.Object[,]"仅显示.如果我然后尝试访问vals.[1,1],我得到错误The field,constructor or member 'item' is not defined

谢谢,

.net c# excel f#

6
推荐指数
1
解决办法
1485
查看次数

f#重复定义

在F#powerpack数学提供程序源代码:我看到了这个(在lapack_service_netlib.fs)

member this.dgemm_((a:matrix),(b:matrix)) =  
 // allocate results
  let c = Matrix.zero (m) (n)
  // transpose
  let c = Matrix.transpose c
...
  // fixups
  let c = Matrix.transpose c
  // result tuple
  c
Run Code Online (Sandbox Code Playgroud)

为什么这个有用?确实c有重复的定义?

f# shadowing

6
推荐指数
1
解决办法
850
查看次数

F#模块扩展与类型扩展

如果我想为标准偏差定义浮点数组的扩展方法,那么在Array模块上使用模块扩展还是在类型上使用扩展更好float[]?喜欢 :

module Array =
   let std (arr: float[]) = ...
Run Code Online (Sandbox Code Playgroud)

要么

type float ``[]`` with 
    member this.std = ...
Run Code Online (Sandbox Code Playgroud)

如果我输入扩展作为后者,是否std只计算一次或每次使用它?

而且,后者的正确格式是什么,显然type float ``[]`` with不会导致...谢谢.

f#

6
推荐指数
1
解决办法
690
查看次数

F# 变量脱离上下文

在以下虚拟代码中,如果我在最后一行设置断点,x则无法在调试器中访问该变量:

名称 x 在当前上下文中不存在。

module main = 
    let x = 1
    printfn "%d" x
    1
Run Code Online (Sandbox Code Playgroud)

但是如果我将最后一行更改为1|>ignore并在那里设置断点,我可以x = 1在调试器中看到。在第一种情况下,F 如何确定x超出范围?谢谢。

f#

5
推荐指数
1
解决办法
246
查看次数

f#array.filter基于bool数组

如果我有数组A,而我还有一个布尔阵列isChosen与相同长度A如何建立从一个新的数组A,其中isChosentrue?类似的东西A.[isChosen]?我不能Array.filter直接使用,因为isChosen不是A元素的功能,没有Array.filteriArray.mapi.

f#

1
推荐指数
1
解决办法
520
查看次数

F#交互式启动文件中的模块

我有一个finit.fsx文件要在fsi.exe启动时加载,如:

#r xxxx
type xx = xxx
module Util = 
   let cd path = xxxx
   ...
Run Code Online (Sandbox Code Playgroud)

启动fsi.exe后,将其加载为

namespace FSI_0002
  module Util = begin
    val cd : string -> unit
  ...
  end
Run Code Online (Sandbox Code Playgroud)

问题是我该如何使用module util?我不能open Utilcd直接使用.为了进一步困扰我,如果我把一个命名空间放在顶行,比如namespace Test,在fsi.exe中,它被加载为

namespace FSI_0002.Test
  val cd : string -> unit
  ...
Run Code Online (Sandbox Code Playgroud)

在哪里Module Util?然后我必须open Test;;Util.cd.

有没有办法在F#启动脚本中定义模块并自动打开模块?谢谢.

f# f#-interactive

1
推荐指数
1
解决办法
963
查看次数

标签 统计

f# ×6

.net ×1

c# ×1

excel ×1

f#-interactive ×1

shadowing ×1