标签: record

F#可选记录字段

我有一个F#记录类型,并希望其中一个字段是可选的:

type legComponents = {
    shares : int<share> ;
    price : float<dollar / share> ;
    totalInvestment : float<dollar> ;
}

type tradeLeg = {
    id : int ;
    tradeId : int ;
    legActivity : LegActivityType ;
    actedOn : DateTime ;
    estimates : legComponents ;
    ?actuals : legComponents ; 
}
Run Code Online (Sandbox Code Playgroud)

在tradeLeg类型中,我希望actuals字段是可选的.我似乎无法弄明白,也无法在网上找到可靠的例子.看起来这应该很容易

let ?t : int = None
Run Code Online (Sandbox Code Playgroud)

但我真的似乎无法让这个工作.呃 - 谢谢你

Ť

f# record optional

13
推荐指数
2
解决办法
4152
查看次数

5毫秒后调用方法

如何在使用MediaPlayer播放音频5毫秒后调用记录方法.我尝试了类似的东西,但我不知道,我没有找到任何好的例子来结束这个.

while(mp.isPlaying()){
    if(record=0){
       for(int i=0; i<5millisec; i++){ //how to define 5 millisec or is any better solution
       }
    startRecord();
    record=1;
    }
}
mp.stop();
mp.release();
mp=null;   
Run Code Online (Sandbox Code Playgroud)

android record delay playing

13
推荐指数
2
解决办法
5万
查看次数

requestRecordPermission什么都不做

自iOS 7更新以来,录制应用程序发生了一些变化.我有一个应用程序曾经使用iOS 5和6,但当我尝试在iOS 7上运行它 - 录音没有响应.

我检查了互联网,看到有一种新方法需要调用.我试图将此代码放在viewDidAppear中:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    if([[AVAudioSession sharedInstance] respondsToSelector:@selector(requestRecordPermission:)])
    {
        [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
            NSLog(@"permission : %d", granted);
        }];
    }
}
Run Code Online (Sandbox Code Playgroud)

'grant'总是1,虽然我没有授予任何权限,也没有看到任何请求弹出窗口.

顺便说一句,我正在尝试使用xcode 4.6.3来处理这个问题.我使用requestRecordPermission方法为AVAudioSession创建了一个类别,因为此方法仅在iOS 7中可用.

谢谢.

permissions record ios avaudiosession ios7

13
推荐指数
2
解决办法
7405
查看次数

我可以使用 C# 9 记录作为 IOptions 吗?

我刚刚开始使用 C# 9 和 .NET 5.0,特别是新record结构。我发现我有很多关于记录类型速记语法的优秀用例。

我考虑过的用例之一是对 ASP.NET Core 应用程序使用recorddto in IOptions<>,而不是常规类。这些选项类通常很简单,所以我认为它非常适合,但似乎我不能让它轻松工作,因为使用配置应用程序IOptions<>需要对象具有无参数构造函数。

public record MyOptions(string OptionA, int OptionB);

public class Startup
{
    public void ConfigureServices(IServiceCollection services) {
        services.Configure<MyOptions>(Configuration.GetSection(nameof(MyOptions)));
    }
...
}

public class MyController : Controller 
{
    private readonly MyOptions _options;
    public MyController(IOptions<MyOptions> options) {
        _options = options.Value;  // This throws an exception at runtime
    }
}

Run Code Online (Sandbox Code Playgroud)

上面的示例在尝试访问该IOption<>.Value属性时抛出以下异常:

System.MissingMethodException: '没有为类型 'AcmeSolution.MyOptions' 定义无参数构造函数。

有没有办法配置IOptions配置系统以使用记录的构造函数反序列化选项,而不是需要无参数的构造函数?

我可以对记录使用普通语法,但是使用类确实没有任何好处。

c# record c#-9.0

13
推荐指数
2
解决办法
1186
查看次数

F#记录会员评估

为什么每次通话都要评估tb?有没有什么方法可以让它只评估一次?

type test =
  { a: float }
  member x.b =
    printfn "oh no"
    x.a * 2.

let t = { a = 1. }
t.b
t.b
Run Code Online (Sandbox Code Playgroud)

f# record member

12
推荐指数
2
解决办法
1817
查看次数

推荐的宏为Clojure的defrecord构造函数添加功能?

defrecord 在clojure中允许使用自定义字段定义简单数据容器.

例如

user=> (defrecord Book [author title ISBN])
user.Book
Run Code Online (Sandbox Code Playgroud)

结果的最小构造函数只接受位置参数而没有其他功能,例如字段默认,字段验证等.

user=> (Book. "J.R.R Tolkien" "The Lord of the Rings" 9780618517657)
#:user.Book{:author "J.R.R Tolkien", :title "The Lord of the Rings", :ISBN 9780618517657}
Run Code Online (Sandbox Code Playgroud)

编写包含默认构造函数的函数总是可以获得更复杂的构造语义 - 使用关键字参数,提供默认值等等.

这似乎是宏提供扩展语义的理想方案.人们为了更丰富的defrecord建设而编写和/或推荐了哪些宏?

macros constructor record clojure

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

用于返回带有修改字段的Haskell记录的函数

鉴于:

data MyRecord a = MyRecord{list :: [a], other_fields :: Char, …}
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个函数,它将一个新a的列表放入并返回一个新的MyRecord:

pushOntoList :: a -> MyRecord -> MyRecord
Run Code Online (Sandbox Code Playgroud)

问题:

有没有一种方法可以写出pushOntoList这样的方式,它不依赖于记录的其余部分,而只是简单地将其修改为未经修改?

问这个问题的另一种方法是你可以在pushOntoList不看清楚其余MyRecord定义的情况下编写吗?

syntax haskell record

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

graphviz:带有粗体标题的记录节点

我正在尝试使用graphviz来执行类似于UML类图的操作.

我想知道是否有一种方法可以使样式'register'的节点具有粗体字的第一个字段,使其与其他字段不同.

我的节点看起来像这样:

digraph i { 
  "node" [
    label = "<f0> title | <f1> index | ... | <f2> field1 | <f3> field2"
    shape = "record"
  ];  
}
Run Code Online (Sandbox Code Playgroud)

我试过这个但它不起作用:(嵌入html)

digraph i { 
  "node" [
    label = "<f0> <B>title</B> | <f1> index | ... | <f2> field1 | <f3> field2"
    shape = "record"
  ];  
}
Run Code Online (Sandbox Code Playgroud)

uml record dot graphviz

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

在Delphi中记录方法和const参数

当涉及"涉及方法的记录"时,看起来Delphi编译器不支持const记录参数.

以前没试过滥用const约定,我有点惊讶地发现编译器接受了这样的代码:

type
    TTest = record
       Field : String;
       procedure Update;
    end;

procedure TTest.Update;
begin
    Field := Field + '+1';
end;

procedure DoStuff(const t : TTest);
begin
    ShowMessage(t.Field);
    t.Update;
    ShowMessage(t.Field);
end;
Run Code Online (Sandbox Code Playgroud)

虽然如果你尝试t.Field:='doh';DoStuff中执行操作 ,编译器会正确地抱怨,但是你可以调用修改"const"记录的方法,甚至没有提示或警告.因此,这与引用类型(例如类或动态数组)不同,其中允许直接字段写入(因为const仅限制对参数本身的更改).

附录:这允许以这种方式修改声明的编译时常量,如:

const
   cTest : TTest = (Field : '1');
...
cTest.Update;              // will show '1' then '1'+'1'
ShowMessage(cTest.Field);  // will show '1' (because optimized at compile-time)
Run Code Online (Sandbox Code Playgroud)

这是接受/记录的行为吗?还是仅仅是编译器的缺点?

delphi methods record

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

如何在Delphi程序中将函数作为参数传递?

是否可以将对象函数作为参数传递给过程而不是传递整个对象?

我有一个记录定义,其函数定义为公共类参数,例如:

    TMyRecord = record
      public
        class function New(const a, b: Integer): TMyRecord; static;
        function GiveMeAValue(inputValue: integer): Single;
      public
        a, b: Integer;
      end;
Run Code Online (Sandbox Code Playgroud)

该功能可能是这样的:

    function TMyRecord.GiveMeAValue(inputValue: Integer): Single;
    begin
      RESULT := inputValue/(self.a + self.b);
    end;
Run Code Online (Sandbox Code Playgroud)

然后我希望定义一个调用类函数的过程,GiveMeAValue但我不想将它传递给整个记录.我可以做这样的事情,例如:

    Procedure DoSomething(var1: Single; var2, var3: Integer, ?TMyRecord.GiveMeAValue?);
    begin
      var1 = ?TMyRecord.GiveMeAValue?(var2 + var3);
      //Do Some Other Stuff
    end;
Run Code Online (Sandbox Code Playgroud)

如果是,那么我如何正确地将该函数作为过程参数传递?

delphi procedure function record parameter-passing

12
推荐指数
1
解决办法
2万
查看次数