I am using the F# CTP 1.9.7.8 and running the samples based on Tomas Petricek's article, on page 12
type MyCell(n:int) = let mutable data = n + 1 do printf "Creating MyCell(%d)" n member x.Data with get() = data and set(v) = data <- v member x.Print() = printf "Data %d" n override x.ToString() = sprintf "(Data %d)" data static member FromInt(n) = MyCell(n)
Four questions comes into mind as I typed this into the F# Interactive:
- Why do I get an error message as shown below in Figure 1.
- Why is there an
=
beside themember x.Print()
,x.ToString()
but not inmember x.Data
? - Where did the
x
come from? and why is it there when the typeMyCell
is being defined so how can you reference an 'object' in that way, such as forx.Print()
,x.ToString()
andx.Data
?
> type MyCell(n:int) = - let mutable data = n + 1 type MyCell(n:int) = -----^^^^^^^ stdin(6,6): error FS0547: A type definition requires one or more members or othe r declarations. If you intend to define an empty class, struct or interface, the n use 'type ... = class end', 'interface end' or 'struct end'. -
Figure 1.
Thanks, Best regards, Tom.