zoukankan      html  css  js  c++  java
  • F#中的Printfn输出

    输出I/O执行结果到控制台最简单的方法就是使用printf函数家族了。printf这类函数一共包括三个主要方法:printf,printfn,和sprintf。

    使用printf输出到屏幕是直接输出。

    例如:

    View Code
    1 printf "Hello";;

    将输出:Helloval it : unit ()  [以上是在F#Interactive窗口输出,以后如果不加特别说明都将在此窗口输出]

    使用printfn输出到屏幕时将先添加一空行,然后再输出

    例如:

    View Code
    1 printfn "World";;

    将输出:World

        val it : unit ()

    那么如果两个一起用:printf "hello"

              printfn "world";;

    将会输出:hello world

    需要说明一点的是,虽然.NET System.Console类常用来输出文本,但是printf函数显然更合适,因为他的参数是强类型,这有利于类型推断。

    输出文本到控制台显示并不让人兴奋,但printf添加了很多强大的具体格式化和内嵌检查的重载。看下面的例子。

    >let mountain = "K2"
    let height = 8611
    let units = 'm';;
    //回车后输出:
    val mountain : string = "K2"
    val height : int =8611
    val units : char = 'm'

    >printfn
    "%s is %d %c high" mountain height muits;;
    //输出:
    K2 is 8611m high
    val it : unit = ()

    当使用F#的类型推断系统时,如果数据和所给的格式化说明符不匹配,编译器将报错。

    看下面的例子:

    1 >printfn "An integer = %d" 1.23;;
    2 //执行这名代码时会报错。
    3 'float'和类型byte,int16,int32,int64,sbyte,uint16,uint32,uint64,nativeint,unativeint
    4 ,arising等等不匹配

    另外,由于F#编译器知道如何给格式化说明符一系列所期望的类型,类型推断系统能够约束值的类型。

    看例子:

    1 >let inferParams x y z=
    2 printfn "x = %f, y = %s, z = %b" x y z;;
    3 //类型为:
    4 val inferParams : float -> string -> bool -> unit
    5
    6 //因为格式化时为x指定了%f,所以推断的float,后两个同理

    以上介绍了printf和printfn的用法。下面是sprintf.

    (sprintf比较简单,前面带了个s,就说明类型应该是string类型,当然这是我的理解。)

    1 >let location = "World";;
    2 //输出:
    3 val location : string
    4 >sprintf "Hello,%s" location;;
    5 //输出:
    6 val it : string = "Hello World"

    以前就是F#中的基本输出类型。

    敬请期待下一篇的F#程序剖析

        

  • 相关阅读:
    区间DP入门
    Prime Permutation(思维好题 )
    小字辈 (bfs好题)
    博弈论小结之尼姆博弈
    Hometask
    Lucky Sum (dfs打表)
    对称博弈
    尼姆博弈
    莫队算法 ( MO's algorithm )
    Codeforces 988D Points and Powers of Two ( 思维 || 二的幂特点 )
  • 原文地址:https://www.cnblogs.com/carsickcars/p/2160384.html
Copyright © 2011-2022 走看看