除了或,还有别的选择吗?
我对前者不满意,因为它使用byref返回值,也就是说,我需要做恼人的事情
let x = ref ""
if hashtable.TryGetValue (key, x) then
// Found, value in !x
else
// Not found.
我对后者不满意,因为它不是通用的。
编辑。我更喜欢类似于Map.tryFind的通用语法,即,
match Hashtable.tryFind k hashtable with
| None -> ... // Not found
| Some v -> .
我想做一些类似这样的事情:
let x = 5
let y = 10
let expr = Console.ReadLine()
expr
用户可以在控制台中键入"x+y"以存储在expr中。
在F#中如何计算这样的语句呢?
最终,我希望用户能够在网页上输入表达式或系统的一组规则,并将它们保存在数据库中,以便在适当的时间应用于F#库中。我只是不知道如何将输入的字符串转换为F#中的函数值。
感谢您提供的任何帮助!
亚当
因此,我试图使用F#集作为哈希表。但是我的元素类型没有实现IComparable接口(尽管它实现了IEquatable)。由于比较约束,我说不允许使用该结构,这是错误的。通过进一步的阅读,我发现F#集是使用二叉树实现的,这使得插入导致了O(log(n))。这在我看来很奇怪,为什么设置的结构是这样设计的?
编辑:所以我了解到,Set in F#实际上是一个SortedSet。我想问题是,为什么排序集在某种程度上比一般哈希集作为一个不变/功能数据结构更可取呢?
如何编写定义参数数据的f#递归数据类型 type Three <'a> 它调用输出: Node (1,Node (2,Leaf,Leaf),Node (3,Node (4,Leaf,Leaf),Leaf)) 如果我输入: let tree = Node(1, Node(2, Leaf, Leaf), Node(3, Node(4, Leaf, Leaf), Leaf))
tree
我有一大组重叠的圆圈,每个圆圈都在一个随机位置,每个圆圈都有一个特定的半径。
type Circle =
struct
val x: float
val y: float
val radius: float
end
给出一个新的点,类型为
type Point =
struct
val x: float
val y: float
end
我想知道我的集合中哪些圆圈包含了新的点。线性搜索是琐碎的。我正在寻找一种结构,它可以容纳圆,并为所呈现的点返回比O(N)更好的封闭圆。
理想情况下,该结构对于新圆的插
首先,这是用于模式匹配的,所以请记住这一点,因为你可能会有一个完全不同的解决方案,我想知道它。
我有这一系列的数据(现在就叫它mystring吧)。
string a = get_starting_letters(mystring)
string b = get_ending_letters(mystring)
bool c = check_code_appears(mystring)
.
.
.
and so on
我希望有一个字典/真值表,它的工作原理是这样的(*表示通配符)。
key (a,b,c...) value
"abc", *, T
这里的F#新手花了很多时间试图用MSDN F#教程中的一段简单代码来解决错误。
#r "Microsoft.Office.Interop.Excel.dll"
// fails with invalid/not found errors
#r "Microsoft.Office.Interop.Excel" // works like a charm.
任何F#大师都知道为什么吗?
我正在努力学习F#,我真的很喜欢到目前为止我所看到的。我正在尝试实现一些C#代码-- F#思维方式,作为练习和学习的一个练习。
如果以前有人回答我的问题,我真的很抱歉,但是我找不到解决我所有问题的答案。
我们有一个销售队伍结构,我们有销售主管和普通的销售人员。主管可能有也可能没有主管。
所有销售数据都来自另一个CSV格式的系统。在阅读记录时,我们不知道SalesPerson是否有报告。
我似乎不明白如何在不变的F#世界中加载树。我相信有办法的。
我们简化的遗留C#代码定义(转换为Enligsh)
public class SalesPerson
{
public int Id { ge
我有一个SQL Server数据库,表中有非常大的记录。我正在尝试构建一个ASP.NET网站,使用C#在我的Server数据库中搜索,结果将显示在一个网格视图中。数据库已在列NIM中具有主键。这是我目前的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public
我正在用F#设计一个游戏对象。在C++中,我会创建类来表示图形方面、物理方面等,每个类都有动态值,然后将这些类的实例添加到GameObject中。我可以在F#中对可变类型使用相同的设计,但我试图保持所有内容都是不可变的。因此,如果我使用相同的设计,我将在每帧中重新创建数千个大对象,并且可能将所有cpu时间都花在分配上。
有没有什么方法可以定义一个类型,使我可以链接到另一个对象的值并提供新的值,以减少分配?
例如,要更改框的颜色,我想使用旧框的内存和新的图形块,并使用旧图形块的内存和新的颜色:
let box = ...
...
let changedBox = {box with
所以当我做这样的事
let mainMenu() = ["1. list item one",itemOne
"2. list item two",itemTwo
"3. list item three",itemThree
"4. list item four",itemFour
"0. Exit",exitApplication]
我正在尝试将图式从PythontoF#
python "Node“类:
class Node:
""" A Node is the basic element of a graph. In its most basic form a graph is just a list of nodes. A Node is a really just a list of neighbors.
"""
def __init__(self, id, index=-1, name="anonymous"):
我正在尝试用Newtonsoft.Json 5.0.4将一些非常简单的json反序列化为F#:
#if INTERACTIVE
#r "C:/Users/OCatenacci/fshacks/CreateWeeklySWEEventsEmail/packages/Newtonsoft.Json.5.0.4/lib/net40/Newtonsoft.Json.dll"
#endif
open System
open Newtonsoft.Json
type meta() = class
member val count = 0 with get, set
e
我有一个类别模型,定义如下:
class Category(models.Model):
number = models.PositiveIntegerField()
name = models.CharField(max_length=200)
parent = models.ForeignKey('self', blank=True, null=True)
def __unicode__(self):
name = unicode(self.name)
if self.parent: