小编bra*_*ing的帖子

如何正确订阅 ReactiveObject 的更改序列?

关于 ReactiveUi 的另一个问题。我有一个用于编辑表单的 ViewModel。模型是 ReactiveObject。我只想在对象发生更改时启用 savecommand。我的尝试:

var canSaveCommand =
        this.WhenAnyValue(vm => vm.CurrentClient)
            .Where(client => client != null)
            .Select(client =>
                client.Changed
            )
            .Any();
Run Code Online (Sandbox Code Playgroud)

但是当表单出现时SaveCommand已经启用了。我的错在哪里?

linq reactive-programming system.reactive reactiveui

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

生成一个表示年份和季度的列

我有一个列有金融交易日期的专栏.我想按季度将它们分组以获得数据透视表报告.不太清楚如何做到这一点.

pivot-table google-sheets

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

使用paperclip和rails缓存已签名的S3 URI

我在S3上使用paperclip生成过期的签名URI.但是,在每个请求中,我生成一个不理想的新URI,它会强制浏览器在每次刷新页面时从S3下载一组新图像.

我想要做的是将生成的URI缓存的时间少于它们在S3上过期的时间.有没有人之前做过这样的事情,可以建议一个解决方案.

如果这表明解决方案(或不是),我正在heroku上部署

ruby-on-rails heroku amazon-s3 paperclip

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

使用.NET反应式扩展定期调度IEnumerable

比方说,我有一个可枚举的

dim e = Enumerable.Range(0, 1024)
Run Code Online (Sandbox Code Playgroud)

我希望能够做到

dim o = e.ToObservable(Timespan.FromSeconds(1))
Run Code Online (Sandbox Code Playgroud)

因此,observable将每秒生成值,直到可枚举用尽.我无法想出一个简单的方法来做到这一点.

enumerable system.reactive

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

使用带有被动扩展的Observable.Publish

我对使用Observable.Publish进行多播处理的生命周期感到有些困惑.如何使用正确连接?反对直觉我发现我不需要为多播观察者调用connect来启动他们的订阅.

var multicast = source.Publish();
var field0 = multicast.Select(record => record.field0);
var field1 = multicast.Select(record => record.field1);

// Do I need t*emphasized text*o call here?
var disposable = multicast.connect()

// Does calling 
disposable.Dispose();
// unsubscribe field0 and field1?
Run Code Online (Sandbox Code Playgroud)

编辑

我的难题是为什么当我没有在IConnectableObservable显式上调用Connect时我成功订阅了.但是我在IConnectableObservable上调用Await,后者隐式调用Connect

Public Async Function MonitorMeasurements() As Task


    Dim cts = New CancellationTokenSource

    Try
        Using dialog = New TaskDialog(Of Unit)(cts)

            Dim measurementPoints = 
                MeasurementPointObserver(timeout:=TimeSpan.FromSeconds(2)).
                TakeUntil(dialog.CancelObserved).Publish()

            Dim viewModel = New MeasurementViewModel(measurementPoints)
            dialog.Content = New MeasurementControl(viewModel)
            dialog.Show()

            Await measurementPoints
        End Using
    Catch ex As …
Run Code Online (Sandbox Code Playgroud)

.net system.reactive

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

WPF 中带有状态的标记扩展

我刚刚发现 WPF 标记扩展实例在控件模板中重用。因此,控件模板的每个副本都获得相同的标记扩展集。

如果您希望扩展程序为其所连接的每个控件保持某种状态,这将不起作用。任何想法如何解决这个问题。

wpf markup-extensions

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

反应式扩展源代码中的NO_PERF标志是什么

在ReactiveExtensions源代码中,有大量代码在不同的实现之间切换,例如

https://github.com/Reactive-Extensions/Rx.NET/blob/master/Rx.NET/Source/System.Reactive.Linq/Reactive/Linq/QueryLanguage.StandardSequenceOperators.cs

和一个片段

#if !NO_PERF
    return new Distinct<TSource, TSource>(source, x => x, EqualityComparer<TSource>.Default);
#else
     return Distinct_(source, x => x, EqualityComparer<TSource>.Default);
#endif
Run Code Online (Sandbox Code Playgroud)

这个标志的意图是NO_PERF什么,用它编译的库和没有它的库之间的行为有什么不同.

.net c# compiler-flags system.reactive

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

异步和等待C#和问题

此程序不会以正确的顺序打印输出.

public static void Main(string[] args)
    {
        new Program().Start();
    }

    public async void Start()
    {
        int num1 = await GetNumber();
        int num2 = await GetNumber();
        int num3 = await GetNumber();
        Console.WriteLine("Wait...");
        Console.ReadKey();
    }

    public static async Task<int> GetNumber()
    {
        System.Threading.Thread.Sleep(4000);
        Console.WriteLine("Hello");
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

它输出:

--------wait 4Seconds
--------print Hello
--------wait 4Seconds
--------print Hello
--------wait 4Seconds
--------print Hello
--------print wait....
Run Code Online (Sandbox Code Playgroud)

它应该输出

--------print wait....
--------wait 4Seconds
--------print Hello
--------print Hello
--------print Hello
Run Code Online (Sandbox Code Playgroud)

.net c# console-application async-await

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

如何从 std::iota 构造跨度?

以下作品:

#include <vector>
#include <ranges>

int main() {
    auto view = std::vector<int>{0,1,2,3,4};
    auto s = std::span{view.begin(), view.end()};
    std::vector test(view.begin(), view.end());
}
Run Code Online (Sandbox Code Playgroud)

但这并不:

#include <vector>
#include <ranges>

int main() {
    auto view = std::ranges::iota_view{0, 1000};
    auto s = std::span{view.begin(), view.end()};
    std::vector test(view.begin(), view.end());
}
Run Code Online (Sandbox Code Playgroud)

问题是,我有一些通用代码,我想向它发送一个范围,然后在该范围上创建一个跨度。我试过发送一个vector,没问题。结果iota失败。

template <typename TRange>
requires std::ranges::random_access_range<TRange>
void Foo(TRange const & r)
{
     // The algorithm starts with a full span and then partitions
     auto s = std::span(r.begin(), r.end());
}
Run Code Online (Sandbox Code Playgroud)

该代码是从 boost 移植的,在那里我会使用boost::make_iterator_range() …

c++ c++20 std-span

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

为什么FSharp交互允许mutable let?

在FSI我输入

> let a = 10;;

val a : int = 10

> let a = a + 1;;

val a : int = 11
Run Code Online (Sandbox Code Playgroud)

看起来我在这里有一个可变变量?我错过了什么吗?

f# read-eval-print-loop

0
推荐指数
2
解决办法
223
查看次数

是否存在以下操作的通用函数编程名称

通过我的C#代码中的组合,我最终得到了一个类型

IObservable<Maybe<IObservable<T>>> events;
Run Code Online (Sandbox Code Playgroud)

其中Maybe是monad选项,IObservable是被动monad.

现在我想将其转化为

IObservable<Maybe<T>> flatEvents;
Run Code Online (Sandbox Code Playgroud)

我认为它表达了几乎相同的东西.注意我想保留可能体现的"无所事事"事件.我不想完全展平它,所以当只有T的实例可用时我才会看到事件.

经过一些试验和错误后,我发现我可以进行转换

var flatEvents =  events
            .Select(p=>p.Select(q=>q.Select(v=>v.ToMaybe()))
                        .Else(Observable.Return(None<T>.Default)))
            .Switch();
Run Code Online (Sandbox Code Playgroud)

其中None<T>.Default返回一个Maybe<T>里面是空的.

T Maybe<T>.Else(T v) 提取选项monad中包含的值,如果没有,则提供替代值.

考虑到命名事情是最难的事情CS我正在寻找这个扁平化运算符的名称.我不是一个haskell程序员,但我确信我没有在这里发明任何东西,这是一种常见的投影.这有名字吗?

c# monads naming functional-programming system.reactive

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

为什么我不能添加带有类型查找的抽象层来剥离C++中的引用?

这是一个后续问题

为什么我不能在C++中使用转发引用的特征?

已经正确回答.但是我在下面尝试了自己的解决方案

https://godbolt.org/z/X7dBz1

#include <type_traits>

template <typename T, typename enable = void> struct Traits {
    static const bool value = false;
};

template <typename T> struct Traits<T,std::enable_if<std::is_reference<T>::value>> {
    static const bool value = Traits<typename std::remove_reference<T>::type>::value;

};

struct Zip{};
template <> struct Traits<Zip,void> {
    static const bool value = true;
};

template <typename E>
void Execute(E && e){
    static_assert(Traits<E>::value);
}

int main(){
    auto z = Zip();
    Execute(z);
}
Run Code Online (Sandbox Code Playgroud)

理论是,如果正确的专业化失败,那么下一个最专业化的将是基于if T是参考的匹配的那个.如果这匹配,则引用被剥离,我们希望得到一个匹配.但这似乎不起作用.有没有办法解决这个问题,保持我的尝试精神?

c++ type-traits perfect-forwarding c++11

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