问题列表 - 第34228页

使用函数式编程样式数据类型进行模型继承

我已经使用F#最近,试图在功能的实现代码,而不是在不同的语法做一遍OOP.我现在已经运行到,我可以用继承和歧视工会的混合解决问题,但对于我想找一个纯粹的功能性风格的表示.

我想要建模的是这样的(改为保留模式,因为我不能使用实际的代码):

type Shape =
    | Rectangle of Size * Size
    | Circle of Diameter
Run Code Online (Sandbox Code Playgroud)

到目前为止这么好,但现在我需要代表一组与不同类型的形状相关的其他属性,例如:

type ShapeProperty =
    | Color of Shape * Color // Fine, valid for all shapes
    | Rotation of Shape * Angle // Wants to be Rotation of Rectangle * Angle
    | Details of Shape * int // Wants to be Detail of Circle * int
Run Code Online (Sandbox Code Playgroud)

如果不使用Shape的区别联合,我使用了基类和继承,我可以参考实际类型并确保Rotation只能应用于Rectangle而不是Circle,但现在我不能.有没有办法实现类似的东西,同时仍然保持纯粹的功能数据结构?

编辑:

我目前的解决方案是将单个形状的定义与形状完全相关的事实分开,如下所示:

type Rectangle = Rectangle of Size * Size // Or using a record type
type Circle …
Run Code Online (Sandbox Code Playgroud)

inheritance f# types functional-programming

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

ParallelFor代码,用于查找数组中少数元素的总和(Subsetsum问题)

我有以下C#代码片段:

using System;

class count {
 public static void Main()
 {
  int [] a = {-30, 30, -20, -10, 40, 0, 10, 5};
  int i,j,k;
  int N=8;

  for (i=0; i < N; ++i)
   for (j=i+1; j < N; ++j)
    for (k=j+1; k < N; ++k)
     if (a[i] + a[j] + a[k] == 30)
      Console.WriteLine (a[i].ToString () + a[j].ToString() + a[k].ToString());

 }
}
Run Code Online (Sandbox Code Playgroud)

上述程序的作用是从阵列A中找出三元组a1,a2,a3,使得三元组的总和为30.

我想知道如何使用C#Parallel.For扩展计算和计算.

我知道这被用作面试问题,并且有比i,j,k循环更好的替代算法.但是,我想要的只是了解如何使用C#的并行扩展以有效的方式执行此操作.

c# algorithm mono loops data-structures

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

替换非数字字符

我需要从字符串中替换非数字字符.

例如,"8-4545-225-144"需要为"84545225144"; "$ 334fdf890 == - "必须是"334890".

我怎样才能做到这一点?

python regex string

10
推荐指数
2
解决办法
7146
查看次数

iPhone SDK - 获取/计算相机视野(FOV)(增强现实)

有没有办法找出或计算iPhone相机通过调用API的视野(FOV)?或者你需要亲身体验一下吗?

如果无法使用API​​获取或计算它,而是必须将其硬编码到应用程序中,那么找出应用程序运行的设备类型的最佳方法是什么?不同的设备具有不同的FOV(iPhone 4具有比以前版本更大的FOV.)另外,每个设备的FOV究竟有多大?

我问,因为我正在考虑制作一个增强现实应用程序,并且知道FOV是必不可少的.

iphone camera fieldofview augmented-reality

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

HTML表格单元格 - 隐藏一个单元格

我有一个html表,我已经设置为3行2列形式.所以基本上有6个单元格正在显示给suer.

我的问题是不确定该怎么做,是因为我只想使用仅对用户可见的5个单元格,所以想要以某种方式移除单元格位置(3,2),以便它根本不显示任何边框单独的细胞 - 这可以做到,如果是这样,怎么办?

谢谢.

html css

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

C#异步回调仍然在后台线程...帮助!(最好没有InvokeRequired)

我正在编写一个非常简单的异步助手类来配合我的项目.该类的目的是允许方法在后台线程上运行.这是代码;


    internal class AsyncHelper
    {
        private readonly Stopwatch timer = new Stopwatch();
        internal event DownloadCompleteHandler OnOperationComplete;

        internal void Start(Func func, T arg)
        {
            timer.Start();
            func.BeginInvoke(Done, func);
        }

        private void Done(IAsyncResult cookie)
        {
            timer.Stop();
            var target = (Func) cookie.AsyncState;
            InvokeCompleteEventArgs(target.EndInvoke(cookie));
        }

        private void InvokeCompleteEventArgs(T result)
        {
            var args = new EventArgs(result, null, AsyncMethod.GetEventByClass, timer.Elapsed);
            if (OnOperationComplete != null) OnOperationComplete(null, args);
        }

        #region Nested type: DownloadCompleteHandler

        internal delegate void DownloadCompleteHandler(object sender, EventArgs e);

        #endregion
    }
Run Code Online (Sandbox Code Playgroud)

然后通过OnOperationComplete事件返回任务的结果.问题是,当事件被引发时,它仍然在后台线程上.即如果我尝试运行此代码(如下),我会遇到交叉线程错误;

txtOutput.AppendText(e.Result + Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)

请告知任何想法.

c# generics events delegates asynchronous

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

如何将conkeror中的一些文本复制到剪贴板中?

conkeror我开始使用它和它的伟大!但我无法找到如何将浏览器中的某些文本复制到剪贴板中?

browser conkeror

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

在switch语句中使用类类型:它比使用typeid运算符更好吗?

我在下面看到了关于c ++标准$ 6.4.2中switch语句的事情.

Switch语句可以采取一个条件.

条件应为整数类型,枚举类型或类型,其中存在单个转换函数为积分或枚举类型(12.3).如果条件是类类型,则通过调用该转换函数来转换条件,并使用转换结果代替本节其余部分的原始条件

我尝试下面的代码,工作正常.

class Test
{
public:
    operator int() { return 1; }
};

int main()
{
     Test obj;
     switch(obj)
     {
        case 1: cout<<"Test class object";
        break;
     }
}
Run Code Online (Sandbox Code Playgroud)

与使用typeid运算符查找对象类型相比,这是一种更好的方法吗?

在switch case方式中,开销是每个类应该有一个唯一的整数id,它将由转换函数返回.

以typeid方式,如果我们使用类似typeid(obj)== typeid(Test),如果我们有很多类类型,if else链将会很长.代码可读性降低.与switch情况相比可能更慢,因为switch case可能像Compiler的跳转表一样实现

那么,哪种方式更适合在运行时找到对象类型?

编辑:考虑安德烈的评论纠正的问题.

c++

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

两个相同的字符串,但长度不同.修剪,清洁等

我有两个字符串,一个是由PHP生成的,存储在128个字符的数据库中.生成的字符串通过电子邮件发送给用户,他们必须输入字符串.

现在由于某种原因,来自用户(我测试)的那个,长达132个字符var_dump.当我echo他们,他们是完全一样的.同样的事情var_dump.字符数除外.这些额外的4个(不可见)字符来自哪里?

php

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

在iOS上,我如何水平移动navigationItem.leftBarButtonItem?

一个cusomized UINavigationBar要求我提供一个定制的"后退"按钮,我使用navigationItem.leftBarButtonItem = myCustomizedButton,但它的位置是固定的.

有人愿意分享如何将这个按钮40像素移到右边?

customization uinavigationbar ios

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