451 Angular CLI, 77, 412 Component, 89 Detection, 398–399 Http Client, 320–321 Module System, 119 Deployment, 130 Ex100

Total Page:16

File Type:pdf, Size:1020Kb

451 Angular CLI, 77, 412 Component, 89 Detection, 398–399 Http Client, 320–321 Module System, 119 Deployment, 130 Ex100 Index A AngularJS vs. Angular Angular JavaScript using JavaScript CLI, 77, 412 engines, 18 component, 89 platform, 17 detection, 398–399 semantic versioning, 16–17 Http client, 320–321 shims and polyfills, 18 module system, 119 controllers and components, 22 deployment, 130 dependency and constructor ex100, 123–126, 128–129 injection, 22–23 feature module, 122–123 forms, 24 Node commands, 131 modules, 21 root module, 121 module system, 116 routing module, 122 scope, controllers, and components, 24 shared module, 123 templates, 25 Start project, 120–121 Annotations, 91 pipes app.component.spec.ts, 412 combining date formats, 388 Application component, 89 currency, 386 Asynchronous data streams date, 386 event-based reactive programs, 291 json, 388 observable sequences, 292 lowercase, 385 observers, 292–294 percentage, 386 operators predefined date formats, 387 buffer, 300 shortdate, 386 debounce, 302–303 UK pound currency, 386 distinct, 304 uppercase, 385 filter, 304 variety of, 388, 390 from, 298 uses observables, 310 interval, 298 451 © Mark Clow 2018 M. Clow, Angular 5 Projects, https://doi.org/10.1007/978-1-4842-3279-8 INDEX Asynchronous data streams (cont.) Command line interface (CLI) map, 301 bootstrapping, 84–85 of (Was just), 299 compilation, 86 range, 299 compile errors, 82 repeat, 299 creating project, 78–79 scan, 301 file watcher and web server, 84 share, 306–307 modifying project, 81 take, 305 options, 85 timer, 300 root folder, 80 subscription, 295 runtime errors, 82 Asynchronous JavaScript and XML (AJAX) source code, 80 callbacks, 6 Component(s) encoding, 7–8 child, 159–160 HAL and HATEOAS, 8–10 class, 97 JSON and XML, 5 class life cycle promises, 6 constructor vs. OnInit, 188 interfaces, 189 ngAfterContentChecked, 201–203 B ngAfterContentInit, 197–201 Bootstrap, 84–85, 240 ngAfterViewChecked, 205–207 installing ng-bootstrap, 241 ngAfterViewInit, 203–205 Material Design, 244 ngDoCheck, 194–197 installing Angular, 245–246 ngOnChanges, 189–192 widgets-ex200, 246–249 ngOnDestroy, 207–209 web page, 240 ngOnInit, 192–194 widgets-ex100, 241, 243–244 @Component annotation Bounded contexts, 122 elements, 92–93 Browser UI thread, 397 selectors and DSL, 93 selector syntax, 93 C composition, 166–167, 169–170 data flowing downwards, 160–162 Callbacks, 6 customer component, Change detection, 398–399 editing, 171–172 Class providers, 226–227 customer list component, Client/server architecture editing, 172–173 client-side web applications, 3–5 emitting output through server-side web applications, 2 @Output(), 163–166 452 INDEX events flowing upwards, 163 types, 213 customer component, editing, 174 value, 232, 234 customer list component, services, 212 editing, 174–175 convert app to share one hierarchy, 159 instance, 219–220, 222–225 inline style, 90 creating, 213–215, 217–218 inline template, 90 implementations, 212 multiple, 91 Directives, 139 styles, 96–97 creating template reference variable (see components, 151 Template reference variables) DOM element, 152 templates simple directive, 152–153 Elvis operator, 96 DOM events, 154 location, 94 DOM properties, 155 script tags, 95–96 non-structural (see Non- structural Components Development directives) Kit (CDK), 113 structural (see Structural directives) Composition, 159, 166–167, 169–170 with events, 155, 157 Continual integration, 405 Document Object Model (DOM), 310–311 Domain-driven design (DDD), 122 D Domain Specific Language (DSL), 253 Data binding, 16 customer data input, 99 E defined, 98 ECMA 2016, 18 in login component, 98 Elvis operator, 96 one-way (see One-way data binding) Encapsulation target markup, 103 Shadow DOM, 437–438 two-way (see Two-way data binding) styles/styleUrls properties, 444 Decorators, see Annotations view, 437 Dependency, 211 ViewEncapsulation.Emulated, 438–439 Dependency injection ViewEncapsulation.Native, 440–442 advantages, 211 ViewEncapsulation.None, 442–443 defined, 211 Event handling, components-ex400, Injector API, 234–235 111–113 providers, 213 Event loop and messages, 396 class, 226–227 Extensible Markup Language (XML), 5 factory, 227–232 Extensions pane, 66–67 453 INDEX F GET method, 315, 323, 325, 327 path parameters, 331–332, 334–335 Factory providers parameters, 327, 329, 331 dependency-injection-ex400, $http and Http module, 312 227–230 matrix parameters, 318 dependency-injection-ex500, modifying, server response, 340–342, 344 230–232 passing data, request body, 318 Forms PATCH method, 339 and CSS, 354 path parameters, 318 custom validation, 381, 384 POST method, 315, 335, 337–338 FormBuilder methods, 372 PUT method, 339 group nesting, 373–374, 377–379 query parameters, 317 model objects, 352–354 request headers, 316 multiple validators, 380 request options, 322 reactive, 368–371 RequestOptionsArgs object, 327 reactive forms, 352 response headers, 316 template, 354–355, 357–358, REST application, 318 364–365, 367–368 server error response, 344–345, 347 template-driven, 351 template variables and data binding, 358–359, 361, 363–364 I validators, 379 Imperative navigation, 278–280, 282 Fragments Injection, 211 identifier, 251 Injector API, 234–235 URL, 251 Integration testing, 407 Interface G Debug pane, 64–65 Generics, 321 Explorer pane, 62–63 GitHub, 448 Git pane, 64 Search pane, 63 Interpolation, 100 H Hashed, 252 HyperText Transfer Protocol (HTTP) J asynchronous operations, 322 Jasmine, 408–411 asynchronous pipes, 347–348, 350 JavaScript ES5 DELETE method, 340 delete variables/objects, 31 generics, 321 duplication, 32 454 INDEX fail fast behavior, 28 M invocation, 31 Model View Controller (MVC), 395 JavaScript strict mode, 31 Modules, 21 keywords, 33 AngularJS module system, 116 non-extensible variables/ Angular module system, 119 objects, 33 deployment, 130 read only properties, 32 ex100, 123–126, 128–129 scoping, 30 feature module, 122–123 types, 27–28 Node commands, 131 unassigned variable/object, 31 root module, 121 value/object comparison, 28–30 routing module, 122 variables, 30 shared module, 123 JavaScript ES6 Start project, 120–121 arrow functions, 35 defined, 115 block scoped variables and exports, 115 functions, 34–35 JavaScript constants, 34 exporting code, 117 default exports, 39 importing code, 118–119 functions arguments, default types, 115 values, 36 Moustaches, 100 modules, 37 named exports, 38–39 one file, 38 N parameters, 36 Navigation, 278–279 string interpolation, 37 Nested routing TypeScript, 39 defined, 259 JavaScript modules pasta/calzone, 260 exporting code, 117 router-ex100 URLs vs. router-ex200 importing code, 118 URLs, 260 project code, 118–119 router-ex200, 261–262, 264–265, 267–268 from someone else’s @NgModule annotation, 120 module, 118 Node JavaScript Object Notation dependency management, 69 (JSON), 5, 11, 13, 319 package.json file folder node_modules, 75 K, L and running npm install, 75 updating, 74 Karma test runner, 407–408 version numbers, 74–75 455 INDEX Node (cont.) predefined date formats, 387 setting up and running shortdate, 386 module installation levels, 72 UK pound currency, 386 npm, 71 uppercase, 385 npm install to install module, 72 variety of, 388, 390 uninstalling modules, 73 custom, 391, 393 updating modules, 73 Promise objects, 309–310 V8 JavaScript engine code, 69 website, 69–70 Node Package Manager (npm), 71 R Non-structural directives, 140 Resources ngClass, 146–148 Angular Air, 449 ngStyle, 148–150 Angular–related blogs, 448 GitHub, 448 official Angular website, 447 O Router Observables on client side, 251–252 advantages, 310 configuration, 268–269 DOM events, 310–311 DSL, 253 Http services, 312 extracting data, 283 One-way data binding, 99 guards, 284, 286–287, 289 components-ex100, 100, 102 imperative navigation, 278–280, 282 components-ex200, 103–105 matching, 252 components-ex250, 105, 107–108 module, 253–254 with {{ and }}, 100 path parameters, 270 with [ and ] or *, 102 pizza selection example, 255, 258–259 OnInit lifecycle method, 188 query parameters, 270 P, Q S Pipes Selectors, 151 angular Server-side web applications, 2 combining date formats, 388 Shadowing, 213 currency, 386 Structural directives, 140 date, 386 ngFor, 142–143 json, 388 ngIf, 140–142 lowercase, 385 ngSwitch, ngSwitchWhen, and percentage, 386 ngSwitchDefault, 144–145 456 INDEX T ECMA5 JavaScript, 42 enumerations and generics, 48 Template expression, 100 functions, 49–51 Template reference variables getters and setters, 51 ContentChild, 182–184 interfaces, 44, 46 ContentChildren, 185–188 language NgContent and transclusion, 180–182 Angular CLI tool, 21 ViewChild, 176–177 debugging and map files, 20 ViewChildren, 177–178 transpilation, 19–21 Test-driven development, 405 Microsoft’s website, 41 Testing modules Angular application, 407 external, 47 Angular objects, 413 internal, 46 CLI Unit Test, 416–417, 419 types ComponentFixture, 414 alias, 54 ComponentInstance, 414 object, 53 component, uses service, 430–434 primitive, 52–53 development process, 406 syntax error highlighting, 52 Http responses, 419–422, tuple, 54 424–426, 429 union, 53 integration testing, 407 Jasmine, 408–411 Karma, 407–408 U NativeElement, 414–415 UI widgets Transclusion, 180–182 Bootstrap Transpilation installing ng-bootstrap, 241 and Angular CLI tool, 21 Material Design, 244–249 TypeScript class, 19–20 Web page, 240 Transpiler, 19 widgets-ex100, 241, 243–244 Two-way data binding, 99 pre-Angular way, 237–239 components-ex300, 108–110 Unit testing, 405 with [( and )], 108 TypeScript basic types, 43 V classes, 43–44 Value providers, 232, 234 compilation options, 54 Visual Studio Code constructors, 48 Download page, 57–58 definition, 41 Extensions pane, 66–67 457 INDEX Visual Studio Code (cont.) client-side, 3 interface, 62 JSON, 11, 13 Debug pane, 64–65 server-side, 2 Explorer pane, 62–63 striking balance, 4–5 Git pane, 64 Webpack Search pane, 63 and Angular CLI, 133 seeing files, commands, and installing and configuring, 135–136 hot keys, 58–59 modules and dependencies, 134–135 starting a build, 60–61 static assets, 134 W, X, Y Z Web applications Zone.js, 395 with AJAX, 5 Zones detection callbacks, 6 angular zone, 399–402 encoding, 7–8 event loop and messages, 396 HAL and HATEOAS, 8–10 monkey patching, 397 promises, 6 NgZone class, 396 458.
Recommended publications
  • Introduction to Groovy and Grails
    Introduction to Groovy and Grails Mohamed Seifeddine November 25, 2009 1 Contents 1 Foreword 5 2 Introduction to Groovy 7 3 Getting started 9 3.1 Installing Groovy . .9 3.1.1 JDK - A Prerequisite . .9 3.1.2 Installing Groovy . .9 3.2 Updating Groovy . 10 3.3 Editors for Groovy and Grails . 10 3.4 groovysh, groovyConsole & groovy . 10 4 Boolean Evaluation, Elvis Operator & the Safe Navigation Op- erator 13 4.1 Elvis Operator . 15 4.2 Safe Navigation Operator . 15 5 String & GString 19 6 Classes, Dynamic type, Methods, Closures the & Meta-Object Protocol 21 6.1 Dynamic type . 25 6.2 Closure . 29 6.2.1 Create . 29 6.2.2 Call . 30 6.2.3 Getting Information . 33 6.2.4 Method Reference Pointer . 33 6.3 More on Methods . 35 6.3.1 Optional Parantheses . 35 6.3.2 Positional Parameters . 35 6.3.3 Optional Parameters . 36 6.3.4 Mapped Parameters . 37 6.3.5 Dynamic Method Call . 37 6.4 Meta-Object Protocol . 39 6.4.1 Adding Methods & Properties . 39 6.4.2 Add Constructor . 41 6.4.3 Intercepting Method Calls . 41 6.4.4 Getting Information . 42 7 Collections (List, Range, Map) and Iterative Object Methods 47 7.1 List . 47 7.2 Range . 50 7.3 Map . 52 8 Other 55 8.1 Groovy Switch . 55 8.2 Groovy SQL . 56 8.3 File . 58 8.4 Exception Handling . 60 2 8.5 Other . 60 9 Introduction to Grails 61 10 Getting Started 63 10.1 Installing Grails .
    [Show full text]
  • Perception and Effects of Implementing Kotlin in Existing Projects
    Bachelor thesis Undergraduate level Perception and effects of implementing Kotlin in existing projects A case study about language adoption Author: Emil Sundin Supervisor: Wei Song Examiner: Azadeh Sarkheyli Discipline: Informatics Course: IK2017 Credit: 15 credits Examination date: 2018-05-25 Dalarna University provides the opportunity for publishing the thesis through DiVA as Open Access. This means that the thesis work will become freely available to read and download through their portal. Dalarna University encourages students as well as researchers to publish their work in the Open Access format. We approve the publishing of this thesis work under the Open Access format: Yes ☒ No ☐ Dalarna University – SE-791 88 Falun – Phone +4623-77 80 00 Abstract The Kotlin programming language has seen an increase of adoption since its launch in 2011. In late 2017 Google announced first-class support for Kotlin on the Android platform which further popularized the language. With this increase in popularity we felt it was interesting to investigate how Kotlin affects the developer experience. We performed a case study to see how Java developers perceive the Kotlin language, and how it meets the requirements of these developers. To gather the developer requirements and their perception of Kotlin we performed two sets of interviews and rewrote parts of their codebase. The first set of interviews identified developer requirements and the second set of interviews showcased the Kotlin language and its potential use in their codebase. The results show that Kotlin can meet most of the developer requirements and that the perception of Kotlin is positive. Kotlin’s ability to be incrementally adopted was a prominent feature which reduced the inherent risks of technology adoption while providing them the ability to further evaluate the language.
    [Show full text]
  • Groovy and Java: a Comparison Groovy’S Resemblance to Java Is Often Quite Striking
    APPENDIX ■ ■ ■ The Groovy Language Groovy is an all-purpose programming language for the JVM. It was born in 2003 when James Strachan and Bob McWhirter founded the Groovy project with the goal of creating a glue lan- guage to easily combine existing frameworks and components. Groovy is a language that aims to bring the expressiveness of languages such as Ruby, Lisp, and Python to the Java platform while still remaining Java friendly. It attracted much excitement with these ambitious goals, because the majority of other scripting languages on the Java platform either used an entirely alien syntax and APIs or were simply Java without the need to specify types. Despite its youth, Groovy is a stable, feature-rich language that forms the perfect base for Grails. This is a fantastic achievement, given the limited resources available to an open source project such as Groovy. Groovy was an obvious choice as a platform for the Grails framework, because it provides the necessary underlying infrastructure to create the diverse range of miniature domain-specific languages utilized throughout Grails. ■Note Martin Fowler has written an excellent article about domain-specific languages: http://www.mar- tinfowler.com/bliki/DomainSpecificLanguage.html. What does this mean? Well, the syntax you see used throughout the book has often been magically enhanced and shortened by using a combination of Groovy’s already concise syntax and its support for metaprogramming. Groovy performs a lot of magic under the covers, abstracted away from the developer. This removes the burden from the programmer who would otherwise be required to write reams of unnecessary, repetitive code.
    [Show full text]
  • Less Code, More Fun
    KOTLIN LESS CODE, MORE FUN Speaker notes Michael Fazio - @faziodev + 1 Speaker notes + 2 . 1 Speaker notes I work here! 2 . 2 Speaker notes + 3 . 1 Speaker notes + 3 . 2 Speaker notes + 3 . 3 Speaker notes + 3 . 4 3 . 5 WHAT IS... Speaker notes First unveiled in 2011 (after being in dev for a year) Open-sourced in 2012 Version 1.0 released on February 15th, 2016 JetBrains said most languages were lacking the features they wanted Except Scala, but it was slow to compile JetBrains hopes to drive IntelliJ sales 4 . 1 "STATICALLY TYPED PROGRAMMING LANGUAGE FOR MODERN MULTIPLATFORM APPLICATIONS" 4 . 2 STATICALLY TYPED val numbers: List<Int> = listOf(1, 4, 7, 10, 23) enum class Sport { Baseball, Football, Soccer, Basketball } data class Team(val city: String, val teamName: String, val sport: Spo Speaker notes Staticallyval teamtyped: = Team("Milwaukee", "Brewers", Sport.Baseball) Know type of variable at compile time Java C, C++, C# Kotlin uses type inference Type system can figure the type out Don't always have to specify Will warn if not clear Modern: Concise code Lots of features 4 . 3 MULTI-PLATFORM Speaker notes First-class language on Android Interoperable with JVM Transpile Kotlin into JavaScript Compile native code (without VM) Windows Linux MacOS iOS Android WebAssembly 4 . 4 100% JAVA INTEROPERABILITY import io.reactivex.Flowable import io.reactivex.schedulers.Schedulers Flowable .fromCallable { Thread.sleep(1000) // imitate expensive computation "Done" } .subscribeOn(Schedulers.io()) .observeOn(Schedulers.single()) .subscribe(::println, Throwable::printStackTrace) Speaker notes Call existing Java libraries Use Java classes Can call Kotlin classes from Java May need a bit of tweaking 4 .
    [Show full text]
  • Groovy Basicsbasics
    GroovyGroovy BasicsBasics SangSang ShinShin JPassion.comJPassion.com ““LearnLearn withwith Passion!”Passion!” 1 Topics • What is and Why Groovy? • Groovy Syntax • Differences from Java • Refactoring Java code into Groovy code • Inter-operating with Java • Groovy Ecosystem 2 WhatWhat isis && WhyWhy Groovy?Groovy? What is Groovy? • Dynamic, objected oriented, scripting language for JVM • Seamless integration with Java > Designed with Java in mind from the beginning (unlike other scripting languages) > Easy to learn for Java programmers • Borrowed language features from Ruby, Python, Smalltalk 4 Why Groovy over Other Scripting Languages? • Groovy is a dynamic language “specifically” designed for Java platform > Leverage the benefit of JVM • Groovy provides an effortless transition from Java > Groovy code, when compiled, generated Java bytecode > Existing Java code works in Groovy environment “as it is” basis > Incremental change is possible, in fact, recommended (when you plan to migrate existing Java code to Groovy) 5 Groovy IS Java (or BETTER Java) • Provides syntactic sugar > Easy and fun to code (like Ruby) • Provides new language features over Java > Closure (Java 8 now supports closure through Lambda) > Meta-programming • Provides easier development environment > Scripting > Combines compilation and execution into a single step > Shell interpreter 6 LabLab ExerciseExercise 0:0: InstallInstall GroovyGroovy ExerciseExercise 1:1: GroovyGroovy isis JavaJava 5610_groovy_basics.zip5610_groovy_basics.zip 7 WhyWhy GroovyGroovy (or(or Scala)?Scala)?
    [Show full text]
  • Beginning Angular 2 with Typescript
    Beginning Angular 2 with Typescript Greg Lim Copyright © 2017 Greg Lim All rights reserved. COPYRIGHT © 2017 BY GREG LIM ALL RIGHTS RESERVED. NO PART OF THIS BOOK MAY BE REPRODUCED IN ANY FORM OR BY ANY ELECTRONIC OR MECHANICAL MEANS INCLUDING INFORMATION STORAGE AND RETRIEVAL SYSTEMS, WITHOUT PERMISSION IN WRITING FROM THE AUTHOR. THE ONLY EXCEPTION IS BY A REVIEWER, WHO MAY QUOTE SHORT EXCERPTS IN A REVIEW. FIRST EDITION: FEBRUARY 2017 Table of Contents PREFACE CHAPTER 1: INTRODUCTION CHAPTER 2: ANGULAR 2 QUICKSTART CHAPTER 3: RENDERING DATA AND HANDLING EVENTS CHAPTER 4: BUILDING RE-USABLE COMPONENTS CHAPTER 5: CONTROLLING RENDERING OF HTML CHAPTER 6: TEMPLATE DRIVEN FORMS CHAPTER 7: MODEL DRIVEN FORMS CHAPTER 8: INTRODUCTION TO OBSERVABLES CHAPTER 9: CONNECTING TO SERVER CHAPTER 10: BUILDING SINGLE PAGE APPS WITH ROUTING CHAPTER 11: STRUCTURING LARGE APPS WITH MODULES CHAPTER 12: C.R.U.D. WITH FIREBASE ABOUT THE AUTHOR PREFACE About this book Angular 2 is one of the leading frameworks to develop apps across all platforms. Reuse your code and build fast and high performing apps for any platform be it web, mobile web, native mobile and native desktop. You use small manageable components to build a large powerful app. No more wasting time hunting for DOM nodes! In this book, we take you on a fun, hands-on and pragmatic journey to master Angular 2 from a web development point of view. You'll start building Angular 2 apps within minutes. Every section is written in a bite-sized manner and straight to the point as I don’t want to waste your time (and most certainly mine) on the content you don't need.
    [Show full text]
  • Augmented Assignment Python String
    Augmented Assignment Python String WallacheRemington transmigrated usually demonetizing his fermatas inexorably retouch or scorings quirts dog-cheap inexhaustibly. when Precognizant edgier Connor Zebulen heightens premieres hugely alas, and discriminately.he navigates his Suety shrimp and very orthochromatic powerfully. Before writing a corpse of code, shepherded by Greg Ward, there will only small apparent for people writing C extension modules or embedding a Python interpreter and a larger application. Inside the company body, though you remedy your alternative Python implementation to be competitive. Am always missing some kid and marry reason itself are used all list the place? True those two values do these match, this fungus should have cleared up any questions you might never had after what syntax invokes which magic method. Basically, the crusade is wicked to garbage collection and will disappear from memory. Use lowercase suffix for imaginary part. If you post the attitude, but who want to pound up to speed with Python. Adds an element to fight set. We can safely ignore the results of a function. Represents a complex floating point number. The tower two pairs of expressions do for same. File copying operations, and branch of the augmented assignment operators in between. How few I clone or copy it somehow prevent this? Many programming languages have a ternary operator, someone posted an example allow this analysis is hard or perform. Allows an exile of a class to be called as a function. All sequences are cut up of elements. Place wax on the rodent line, leaving an immutable sequence type. It uses a state specific operator.
    [Show full text]
  • Groovy 2.5, 3, 4 Roadmap
    Groovy 2.5, 3, 4 Roadmap Presented by Dr Paul King © 2018, Object Computing, Inc. (OCI). All rights reserved. No part of these notes may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior, written objectcomputing.com permission of Object Computing, Inc. (OCI) Dr Paul King OCI Groovy Lead V.P. and PMC Chair Apache Groovy Author: https://www.manning.com/books/groovy-in-action-second-edition Slides: https://speakerdeck.com/paulk/groovy-roadmap Examples repo: https://github.com/paulk-asert/upcoming-groovy @paulk_asert REIMAGINE TOGETHER Grails © 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 3 REIMAGINE TOGETHER © 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 4 Source: apache.org and apachecon.com websites Groovy Open Collective Groovy by the numbers: Downloads ❖ Popular & growing 2016: 23M 2017: 50M 2018: 103M currently: approx. 16M+ per month Groovy by the numbers: Commits ❖ Steady activity across its lifespan Groovy by the numbers: Contributors Hosting/governance: Contributors: Sponsorship: Groovy by the numbers: Issues resolved ❖ Reasonably responsive most of the time Groovy by the numbers: Releases ❖ Healthy cadence for most of its lifetime Groovy by the numbers: Enhancements ❖ On-going innovation Groovy Roadmap ❖ Groovy 2.5 ▪ 2.5.8 released ▪ Macros, AST transformation improvements, various misc. features ▪ JDK 7 minimum, runs on JDK 9/10/11 with warnings
    [Show full text]
  • Null Coalescing Operator from Wikipedia, the Free Encyclopedia
    Null coalescing operator From Wikipedia, the free encyclopedia The null coalescing operator (called the Logical Defined-Or operator in Perl, Elvis- operator in Groovy[1] and Kotlin[2]) is a binary operator that is part of the syntax for a basic conditional expression in several programming languages, including C#,[3] Perl as of version 5.10,[4] and Swift.[5] In contrast to the ternary conditional if operator used as x ? x : y, the null coalescing operator is a binary operator and thus evaluates its operands at most once, which is significant if the evaluation of x has side-effects. Contents 1 C# 2 CFML 3 Clojure 4 F# 5 Perl 6 Swift 7 SQL 8 PHP 8.1 ?: operator 8.2 ?? operator 9 Python 10 Scheme 11 JavaScript 12 Kotlin 13 Groovy 14 Objective-C 15 Haskell 16 See also 17 References C# In C#, the null coalescing operator is ??. It is most often used to simplify null expressions as follows: possiblyNullValue ?? valueIfNull For example, if one wishes to implement some C# code to give a page a default title if none is present, one may use the following statement: string pageTitle = suppliedTitle ?? "Default Title"; instead of the more verbose string pageTitle = (suppliedTitle != null) ? suppliedTitle : "Default Title"; or string pageTitle; if (suppliedTitle != null) pageTitle = suppliedTitle; else pageTitle = "Default Title"; The three forms are logically equivalent. The operator can also be used multiple times in the same expression: return some_Value ?? some_Value2 ?? some_Value3; Once a non-null value is assigned to number, or it reaches the final value (which may or may not be null), the expression is completed.
    [Show full text]
  • View the Index
    INDEX Symbols and Numbers <boost/graph/ adjacency_list.hpp>, 455 ::testin g:: , 328 adjacency_matrix.hpp>, 455 =0 (pure virtual methods), 138 edge_list.hpp>, 455 2001: A Space Odyssey, li, 353 <boost/heap/*.hpp>, 453 The 300, 685 <boost/intrusive/*.hpp> 42six, 500 associative containers, 453 <algorithm>, 576–628 sequential containers, 434 <any> , 378–379 <boost/lexical_cast.hpp>, 500 <array> , 408 <boost/logic/tribool.hpp>, 370 <atomic> , 653 <boost/math/constants/constants.hpp>, 394 std::system /bin/sh (and ), 697 <boost/multi_array.hpp>, 434 <bitset> , 432–433 <boost/multi_index_container.hpp>, 453 <boost/algorithm/ <boost/numeric/conversion/converter searching/boyer_moore.hpp> , 713 .hpp>, 401 string/case_conv.hpp> , 515 <boost/optional.hpp>, 372 string/classification.hpp> , 512, 513 <boost/pair.hpp>, 374 string/find.hpp> , 519 <boost/program_options.hpp>, 700 string/finder.hpp> , 514 <boost/property_tree/ string/join.hpp> , 517 json_parser.hpp>, 456 string/predicate.hpp> , 511 ptree.hpp>, 456 string/replace.hpp> , 515 <boost/ptr_container/*.hpp> string/split.hpp>, 517 associative containers, 453 string/trim.hpp>, 515 sequential containers, 434 <boost/any.hpp> , 378 <boost/smart_ptr/ <boost/array.hpp> , 408 intrusive_ptr.hpp>, 363 <boost/asio.hpp> , 664 shared_array.hpp>, 356 <boost/bimap.hpp> , 453 shared_ptr.hpp>, 356 <boost/chrono.hpp> , 387 <boost/test/included/unit_test.hpp>, 318 <boost/circular_buffer.hpp> , 434 <boost/timer/timer.hpp>, 390 <boost/container/ <boost/tuple/tuple.hpp>, 376 deque.hpp> , 424 <boost/unordered_map.hpp>,
    [Show full text]
  • Arxiv:1306.1870V1 [Cs.PL] 8 Jun 2013 Contents
    The Cyan Language Jos´ede Oliveira Guimar~aes Campus de Sorocaba da UFSCar Sorocaba, SP Brasil [email protected] [email protected] November 10, 2018 arXiv:1306.1870v1 [cs.PL] 8 Jun 2013 Contents 1 An Overview of Cyan 6 2 Packages and File organization 40 3 Basic Elements 44 3.1 Identifiers . 44 3.2 Comments . 44 3.3 Assignments . 45 3.4 Basic Types . 46 3.5 Operator and Selector Precedence . 53 3.6 Loops, Ifs, and other Statements . 54 3.7 Arrays . 58 4 Objects 59 4.1 Constants . 64 4.2 self . 64 4.3 clone Methods . 64 4.4 Shared Variables . 65 4.5 new, init, and initOnce Methods . 65 4.6 Order of Initialization . 69 4.7 Keyword Methods and Selectors . 70 4.8 On Names and Scope . 72 4.9 Operators as Method Names . 73 4.10 Method Overloading . 74 4.11 Inheritance . 76 4.12 Multi-Methods . 78 4.13 Any, the Super-prototype of Everybody . 79 4.14 Abstract Prototypes . 85 4.15 Interfaces . 86 4.16 Types and Subtypes . 88 4.17 Mixin Inheritance . 89 4.18 Runtime Metaobjects or Dynamic Mixins . 94 5 Metaobjects 96 5.1 Pre-defined Metaobjects . 96 5.2 Syntax and Semantics . 101 5.3 Metaobject Examples . 102 5.4 Codegs . 102 1 6 Dynamic Typing 107 7 Generic Prototypes 113 8 Important Library Objects 116 8.1 System . 116 8.2 Input and Output . 116 8.3 Tuples . 117 8.4 Dynamic Tuples . 122 8.5 Unions . 123 8.6 Intervals . 125 9 Grammar Methods 128 9.1 Matching Message Sends with Methods .
    [Show full text]
  • Groovy 2.5 Features & 3+ Roadmap
    Groovy 2.5 features & 3+ Roadmap Dr Paul King OCI Groovy Lead / V.P. and PMC Chair Apache Groovy https://speakerdeck.com/paulk/groovy-roadmap https://github.com/paulk-asert/upcoming-groovy @paulk_asert © 2018, Object Computing, Inc. (OCI). All rights reserved. No part of these notes may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior, written objectcomputing.com permission of Object Computing, Inc. (OCI) WE ARE SOFTWARE ENGINEERS. We deliver mission-critical software solutions that accelerate innovation within your organization and stand up to the evolving demands of your business. • 160+ engineers • Grails & Micronaut • Friend of Groovy • Global Footprint © 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 3 WE ARE SOFTWARE ENGINEERS. We deliver mission-critical software solutions that accelerate innovation within your organization and stand up to the evolving demands of your business. • Architecture consulting • Machine Learning • Blockchain consulting • Micronaut and • Cloud solutions Microservices solutions • Cyber security • Mobile development • 160+ engineers • Devops solutions • Real-time and embedded • Grails & Micronaut • Groovy & Grails systems development • Gradle consulting • Software Engineering • Friend of Groovy • Internet of Things (IoT) • Technology Training • Global Footprint • Kubernetes consulting • Web Development © 2018, Object Computing, Inc. (OCI). All rights reserved. objectcomputing.com 4 Why Groovy? Some common languages before Groovy was born Dynamic Static Ruby Haskell JavaScript Scala Smalltalk C# Python Java Some common languages when Groovy was born Dynamic Static Ruby Haskell JavaScript Scala Smalltalk C# Python Java Groovy Groovy Java Now a spectrum Dynamic Static Ruby Haskell Scala JavaScript C# R Kotlin Python Java Groovy (extensible opt-in static type checking) What is Groovy? Groovy is like a super version of Java.
    [Show full text]